sed -i s/oldstr/newstr/g
我想用目錄中的新字符串替換所有舊字符串。當我執行這個命令時,它顯示所有的字符串在控制檯上被更改爲新的字符串。但是當我輸入文件並檢查時,舊字符串仍然保持不變。請幫忙弄清楚這個問題雖然使用sed替換字符串,但更改不適用於文件
sed -i s/oldstr/newstr/g
我想用目錄中的新字符串替換所有舊字符串。當我執行這個命令時,它顯示所有的字符串在控制檯上被更改爲新的字符串。但是當我輸入文件並檢查時,舊字符串仍然保持不變。請幫忙弄清楚這個問題雖然使用sed替換字符串,但更改不適用於文件
如果你是在MacOS上,你可以嘗試:
sed -i '' 's/oldstr/newstr/g' your-file
從男人:
就地編輯文件,使用指定的擴展名保存備份。如果給定零長度擴展,則不會保存備份。
因此,通過使用-i ''
它不會創建備份並將更改應用到您的文件。
保持這可能是用來備份:
sed -i.bak 's/oldstr/newstr/g' your-file
要更換多個文件oldstr
,你可以這樣做:
perl -pi -e 's/oldstr/newstr/g' *
保留的備份:
perl -i.bak -p -e 's/oldstr/newstr/g' *
歡迎來到堆棧溢出,你傳遞給了這個'sed'命令的是什麼?請輸入您的輸入文件或'* *號碼。 – RavinderSingh13
根據您的sed版本,您可能需要使用'-i'選項 - 請參閱https://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac- bsd-and-linux ....另外,作爲一種很好的做法,在命令'sed -i.bkp's/oldstr/newstr/g''上使用單引號' – Sundeep
你試過'cat file | sed -i's/oldstr/newstr/g''?使用該文件作爲參數'sed -i's/oldstr/newstr/g'文件' –