awk 替换代码怎么写
我有这个需求,需要截取一个字符串(表示一段路径)的一段,比如下面的这个字符串:
/dir1/dir2/../dirN/good/better/best/dir_last1/dir_last2/...
我希望截取的结果是
/dir1/dir2/../dirN
其中N未知,也就是说我的源串是不固定的。但是其中一定有一个good/better/best子串,后面的还有不固定的路径。毕业论文
本人之前没怎么用这个awk,研究了一下,实在搞不定。
我尝试写出来了一个半成品:
cat file | awk '{sub(/\/good\/better\/best\/dir_last1\/dir_last2\/dir_last3/,""); print}'
这个能将固定子串及后面的固定路径一起去掉(如果能匹配)
问题是,固定子串后面的子串是未知,是可能变化的,所以这个不管用。
这个awk实在不熟。高手给指点一下吧,多谢了。
/dir1/dir2/../dirN
其中N未知
这句话的意思是文件夹的名字以及文件夹个数都不固定。
总之一点规律也没有。除了以绝对路径/开头之外
echo /dir1/dir2/../dirN/good/better/best/dir_last1/dir_last2/... | awk 'gsub(/\/good\/better\/best\/.*/,"")'