我有一个格式为
的数据文件alpha/beta/gamma/beta 0.2
alpha/beta/gamma/beta/gamma 0.2
alpha/beta/gamma/beta/alpha/alpha 0.2 ...
我希望输出为:
alpha/beta/gamma 0.2
alpha/beta/gamma/beta 0.2
alpha/beta/gamma/beta/alpha 0.2 ....
基本上取每行并删除最后$1
后/
末尾的所有字符。
{
sed 's/ & \/*$//'
}
答案 0 :(得分:3)
您可以使用
$ sed 's|/[^/]* | |' infile
alpha/beta/gamma 0.2
alpha/beta/gamma/beta 0.2
alpha/beta/gamma/beta/alpha 0.2
这使用管道|
作为分隔符,因此我们不必转义/
。替换匹配斜杠后跟零或多个非斜杠(/[^/]*
)和一个空格,然后用空格替换它,有效地删除最后一个斜杠及其后面的空格。
答案 1 :(得分:1)
sed可能比awk更好:
sed 's/\/[a-z]* / /' file
答案 2 :(得分:0)
$ awk '{sub("/[^/]+","",$1)} 1' file
alpha/gamma/beta 0.2
alpha/gamma/beta/gamma 0.2
alpha/gamma/beta/alpha/alpha 0.2 ...