我尝试从字符串中删除所有以 -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")
这很接近:
$ 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
您可能仍需要去除过多的空格。
你已经快到了:斜杠是非单词字符,你需要匹配多个字符,所以试试:
echo $(sed 's/-L\S*//g' <<< "-L/home/a -la -L/home/b -lb")
试试这个 sed
echo "-L/home/a -la -L/home/b -lb" | sed 's/-L[^ ]*//g'
如果您不想在第一行有更多空格和空格
sed 's/-L[^ ]*//g;s/^ //' file.txt | tr -s " "