当前位置: 技术问答>linux和unix
awk 替换--有什么语法
来源: 互联网 发布时间:2017-04-04
本文导语: 我有这个需求,需要截取一个字符串(表示一段路径)的一段,比如下面的这个字符串: /dir1/dir2/../dirN/good/better/best/dir_last1/dir_last2/... 我希望截取的结果是 /dir1/dir2/../dirN 其中N未知,也就是说我的源串是不固定的。但是...
我有这个需求,需要截取一个字符串(表示一段路径)的一段,比如下面的这个字符串:
/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/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实在不熟。高手给指点一下吧,多谢了。
|
echo /dir1/dir2/../dirN/good/better/best/dir_last1/dir_last2/... | awk 'gsub(//good/better/best/.*/,"")'
|
楼上正解!!!