我在my.cnf文件逃離美元符號
datadir = /var/lib/mysql
以下更改它mysql3307預期一條線。
sed -i 's/\/var\/lib\/mysql$/\/var\/lib\/mysql3307/' /etc/my.cnf
但是,如果我有以下幾點:
datadir = /var/lib/mysql/
那麼下面不改變路徑預期:
sed -i 's/\/var\/lib\/mysql\/$/\/var\/lib\/mysql3307/' /etc/my.cnf
我想改變路徑mysql3307其中DATADIR會/ var/lib/mysql(帶或不帶/)
更新:
以下是問題: 上述兩個命令都在一臺服務器上運行,並且它們都不起作用。
下正常工作,但我需要補充的是$,表示與MySQL結束線/
sed -i 's/\/var\/lib\/mysql\//\/var\/lib\/mysql3307/' /etc/my.cnf
觀察:
的carot符號^按預期工作,但行結束標誌$不。任何線索?
更新:
似乎使用 「DOS2UNIX的」 命令後進行工作。
當在其中使用'/'的字符串(例如文件路徑)使用sed時,可能需要使用別的東西作爲分隔符,如':'。 'sed -i's:/ var/lib/mysql $:/ var/lib/mysql3307:'/etc/my.cnf'有點更好看:) –
我不太確定問題出在哪裏?我回應你的第二個例子字符串到你的第二個例子sed並得到'datadir =/var/lib/mysql3307' –
是的。這個問題是錯誤的。實際上它們都不在一臺服務器上運行,而且這兩個命令都可以在另一臺服務器上運行 – shantanuo