perl -p -i -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
如果該行可能不會在;
結束,則應使用:
perl -p -i -e 's%^(include /etc/nginx/https.include;.*)$%#$1%' /etc/nginx/ap-servers.include
如果你想保留原始文件,添加一個備份擴展-i
後:
perl -p -i.bak -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
現在解釋一下。 -p
標誌表示就地替換。文件的所有行都將被輸入到表達式中,結果將被用作替換。 -i
標誌表示備份文件的擴展名。通過無任何使用,您可以防止生成備份。 -e
告訴Perl獲取以下參數作爲要執行的表達式。
現在,表達式是s%something%other%
。我使用%
而不是更傳統的/
來避免必須避開路徑的斜槓。我在表達式中使用括號並在替代表達式中使用括號 - 如果您更改了一個,則另一個將會跟隨。因此,%#$1%
實際上是s
第二%
,接着是所需的#
,$1
指示在括號內的圖案,以及s
最後%
。
HTH。手。
這對於serverfault.com,imho更合適。 – 2009-08-13 18:55:03
我不明白爲什麼它適合serverfault。它似乎與服務器沒有任何關係。它屬於超級用戶。投票結束。 – rmeador 2009-08-13 19:14:44
/bin/sh或bash或csh或任何其他shell是圖靈完整語言。你爲什麼不認爲「如何在Y語言中實現X?」屬於StackOverflow? – dmckee 2009-08-14 02:14:59