1
我在Mac和Ubuntu的工作,所以我要讓我的腳本工作,同時支持Mac和Ubuntu,但在這兩個系統sed -i
的工作方式不同:如何讓sed -i在Mac和Ubuntu上都能工作?
在Ubuntu中,它應該是:
sed -i'' 's/Alt/Dog/g' /tmp/example.txt
在Mac,它應該是:
sed -i '' 's/Alt/Dog/g' /tmp/example.txt
我在Mac和Ubuntu的工作,所以我要讓我的腳本工作,同時支持Mac和Ubuntu,但在這兩個系統sed -i
的工作方式不同:如何讓sed -i在Mac和Ubuntu上都能工作?
在Ubuntu中,它應該是:
sed -i'' 's/Alt/Dog/g' /tmp/example.txt
在Mac,它應該是:
sed -i '' 's/Alt/Dog/g' /tmp/example.txt
做出同樣的-i
符號工作,GNU都sed
(Ubuntu的,Linux的)和BSD sed
鍵(Mac OS X),你必須:
-i
選項。這樣:
sed -i.bak 's/Alt/Dog/g' /tmp/example.txt
將與sed
兩種變體正常工作,創建備份文件/tmp/example.txt.bak
並覆蓋原來的文件/tmp/example.txt
與修改後的輸出。 (請注意具有多個鏈接或符號鏈接的文件。)
您不能在同一命令行中使用空後綴(無備份)。在GNU上,空字符串連接到-i
選項(概念上 - 如您在問題中所示);在BSD上,空字符串必須是單獨的參數。從來沒有兩個人見面。