Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中删除以pattern开头的单词_Bash_Sed - Fatal编程技术网

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

在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开头。例如:

输入:

-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提供的信息