2014-03-30 101 views
1

我試圖對所有內容進行替換,包括首次出現的字符串,但是失敗。將所有內容替換爲第一個字符串出現

說我有以下字符串:

one two three four five four three two one 

我想

three four five four three two one 

sed 's/.*three//' 

我結束了

two one 

我試過.* - >(.*$)(.*?)的其他變化無濟於事。

我已經看到如何替換第一次出現http://techteam.wordpress.com/2010/09/14/how-to-replace-the-first-occurrence-only-of-a-string-match-in-a-file-using-sed/,但不是第一次出現的所有東西。

回答

1

由於SED不支持懶惰量詞?,你可以使用這個sed的:

echo "$s" | sed 's/.*two \(three\)/\1/' 
three four five four three two one 

或使用的Perl:

echo "$s" | perl -pe 's/.*?(three)/\1/' 
three four five four three two one 
0

awk得到正確的輸出

awk '{for (i=1;i<=NF;i++) {if ($i=="three") f=1;if (f) printf "%s ",$i}print ""}' file 
three four five four three two one 
相關問題