2013-09-24 52 views
0

這兩個sed命令出現的行爲相同:混淆關於!字符桑達

$ sed "s/^replace=*/replace=mytest/g" test.txt 

$ sed " 
    s!^replace=*!replace=mytest!g 
" test.txt 

這是爲什麼?可以使用!字符而不是/?我沒有在sed文檔中看到!字符的很多解釋。

+0

你確定它是''不是'|'(管)!? – iamauser

+0

我相信這是!而不是管道。 – Exploring

+2

小心引用''bash',例如,解釋'!' –

回答

3

你應該更仔細地閱讀的人的頁面:)

info sed

3.5 s命令

的S的語法(如替代)命令的/正則表達式/更換/標誌。在任何給定的s命令中,/字符可以被任何其他單個字符統一替換。 /字符(或任何其他字符代替它)只有在前面加上\字符才能出現在正則表達式或替換字符中。

TL;博士

由於這些人的頁面所提到的,你可以使用任何單個字符作爲sed的regexpreplacement的分隔符。

編輯: 感謝Evil Otto晶體清理起來:)

+0

我不知道你在這裏指着什麼。 – Exploring

+0

@Nashid,它可能是任何單個字符而不是'/'或'!' :) – Kamiccolo

+0

在技術上,該手冊的這一部分描述瞭如何解決模式匹配問題,並且與搜索替換功能/語法無關。 –