使用awk从行尾删除字符串

时间:2016-02-10 20:28:37

标签: linux awk sed

我有一个格式为

的数据文件
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/ & \/*$//'
}

3 个答案:

答案 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 ...