如何在awk中使用substr?

时间:2015-06-17 21:11:47

标签: unix awk substring substr

我的字符串看起来像这样

/foo/bar
/foo/bar/1
/foo/bar/baz
/foo/bar/baz/1

我希望只有当它是一个数字时才能结束。 例如,/foo/bar保持不变,但/foo/bar/1变为/foo/bar

如何在awk中执行此操作?

3 个答案:

答案 0 :(得分:1)

使用awk,您可以尝试:

awk '{sub(/\/[0-9]+$/,"");print}' filename

输入输出如下:

/foo/bar
/foo/bar
/foo/bar/baz
/foo/bar/baz

如果你想在awk中使用substr函数:

awk '{line=substr($0,1,index($0,/[0-9]/)-2); if(length(line)==0)line=$0; print line}' filename

使用sed,您可以这样做:

while read line; do echo $line | sed 's/\/[0-9]\+$//'; done < filename

答案 1 :(得分:0)

我猜你的号码就在表达的最后。 在这种情况下,下面的代码将起作用,否则请告诉我。

echo "/foo/bar/1" | awk -F"[0-9]+" '{print $1;}'

上面的代码将打印:/foo/bar/

答案 2 :(得分:0)

有很多方法,但

sub(/\/[0-9]+$/, "");

可能是最简单的。