在bash中删除以pattern开头的单词
我尝试删除所有单词,从字符串中以-L开头。例如: 输入:在bash中删除以pattern开头的单词,bash,sed,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") echo$(sed's/-L\w//g'这很接近: $ echo '-L/home/a -la -L/home/b -lb' | sed 's/-L[^[:space:]]*
-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$(sed's/-L\w//g'这很接近:
$ 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")
echo$(sed's/-L\s*//g'试试这个sed
echo "-L/home/a -la -L/home/b -lb" | sed 's/-L[^ ]*//g'
如果您不想在第一行上有更多的空间
sed 's/-L[^ ]*//g;s/^ //' file.txt | tr -s " "
什么是@DevZer0它被称为“此处字符串”,如man bash
所述。感谢@LevLevitsky提供的信息