我的字符串看起来像这样
/foo/bar
/foo/bar/1
/foo/bar/baz
/foo/bar/baz/1
我希望只有当它是一个数字时才能结束。
例如,/foo/bar
保持不变,但/foo/bar/1
变为/foo/bar
如何在awk中执行此操作?
答案 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]+$/, "");
可能是最简单的。