4

我尝试从字符串中删除所有以 -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") 
4

3 回答 3

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

您可能仍需要去除过多的空格。

于 2013-06-24T09:15:35.273 回答
1

你已经快到了:斜杠是非单词字符,你需要匹配多个字符,所以试试:

echo $(sed 's/-L\S*//g' <<< "-L/home/a -la -L/home/b -lb") 
于 2013-06-24T09:17:06.780 回答
1

试试这个 sed

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

如果您不想在第一行有更多空格和空格

sed 's/-L[^ ]*//g;s/^ //' file.txt | tr -s " " 
于 2013-06-24T09:18:00.080 回答