我嘗試刪除從字符串-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")
我嘗試刪除從字符串-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")
這是接近:
$ 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
您可能仍然需要剝去過度空間。
你已經差不多了:斜槓是無字的字符,你需要匹配多個charcters,所以嘗試:
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 " "
是什麼''<<<意味着我從來沒有見過它更多的空間和空間 – DevZer0
@ DevZer0它被稱爲「H ere string「,描述在」man bash「中。 –
感謝@LevLevitsky的信息 – DevZer0