2013-06-24 88 views
4

我嘗試刪除從字符串-L開始的所有單詞。例如:刪除在bash中以模式開頭的單詞

輸入:

-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

是什麼''<<<意味着我從來沒有見過它更多的空間和空間 – DevZer0

+1

@ DevZer0它被稱爲「H ere string「,描述在」man bash「中。 –

+0

感謝@LevLevitsky的信息 – DevZer0

回答

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

你已經差不多了:斜槓是無字的字符,你需要匹配多個charcters,所以嘗試:

echo $(sed 's/-L\S*//g' <<< "-L/home/a -la -L/home/b -lb") 
1

試試這個sed的

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

如果你不」噸要對第一線

sed 's/-L[^ ]*//g;s/^ //' file.txt | tr -s " " 
相關問題