2015-05-14 46 views
3

我想搜索特定字符串的文件,然後在該字符串的開頭放置註釋。但我需要一個避免正則表達式,全局變化和所有其他奇特東西的答案。以最簡單的方式添加註釋字符

我寫這行:

sed -i.bak '/PermitRootLogin no/# PermitRootLogin no/' ./sshd_config 

,但我得到一個錯誤:

sed: -e expression #1, char 21: comments don't accept any addresses

我假設的問題是,我需要轉義字符#,但我沒有找到任何如何做到這一點的資源,甚至提及它。我已經嘗試過將^或\或\ ^放在#前面的各種組合,但我不太清楚。

請注意我有意重複要替換的文本。我想這個問題的最簡單可能的解決方案:如何以最明顯的可能方式用「#XYZ」代替「XYX」。

+0

我不認爲「sed」和「避免正則表達式」都是可以同時實現的。 –

+0

我不是想做一般的模式匹配。只需查找特定的文本並替換爲特定的文本即可。 – Steev43230

+5

你在's/PermitRootLogin ....'之前忘了's'嗎? – mlt

回答

1

如@mlt的評論所示,您可以嘗試在開始時添加一個s您的sed命令。直接從他的評論:

s/PermitRootLogin.... 

我看到你說你有意重複測試被替換。如果你的意思是,你希望它是相同的,也許考慮分組你的匹配文本。我知道你可能意味着你只是想要打字。總之,這裏是如何分組匹配文本,並添加註釋字符:

s/(PermitRootLogin)/# \1/ 

的括號表明匹配的文本應考慮一組中,\ 1表示要放置匹配組存在。

我希望這是有幫助的。快樂的編碼!如果您有任何問題,請留下評論。

+0

謝謝。當我寫這個問題時,重複原始文本在我的上方,我現在就試着學習它。 – Steev43230

相關問題