我尝试删除所有单词,从字符串-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")
答案 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 " "