日期:2014-05-16  浏览次数:20745 次

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实在不熟。高手给指点一下吧,多谢了。
awk?字符串?linux

------解决方案--------------------
echo /dir1/dir2/../dirN/good/better/best/dir_last1/dir_last2/... 
------解决方案--------------------
 awk 'gsub(/\/good\/better\/best\/.*/,"")'

------解决方案--------------------
楼上正解!!!