删除以bash中的pattern开头的单词

时间:2013-06-24 09:12:36

标签: bash sed

我尝试删除所有单词,从字符串-L开始。例如:

输入:

-L/home/a -la -L/home/b -lb

输出:

-la -lb

你知道它的好方法吗?我的想法不起作用:

echo $(sed 's/-L\w//g' <<< "-L/home/a -la -L/home/b -lb") 

3 个答案:

答案 0 :(得分:1)

这很接近:

$ echo '-L/home/a -la -L/home/b -lb' | sed 's/-L[^[:space:]]*//g'
 -la  -lb

或者如果你没有其他空格而不是空格,只需

$ echo '-L/home/a -la -L/home/b -lb' | sed 's/-L[^ ]*//g'
 -la  -lb

您可能仍需要删除多余的空格。

答案 1 :(得分:1)

你几乎就在那里:斜杠是非单词字符,你需要匹配多个字符,所以试试:

echo $(sed 's/-L\S*//g' <<< "-L/home/a -la -L/home/b -lb") 

答案 2 :(得分:1)

试试这个sed

echo "-L/home/a -la -L/home/b -lb" | sed 's/-L[^ ]*//g'

如果您不希望第一行有更多空格和空格

sed 's/-L[^ ]*//g;s/^ //' file.txt | tr -s " "