sed命令在mac和linux下的區別


在 Mac 上使用 sed 命令和 linux 上會有一定區別,在此作為記錄。

不可忽略的備份格式

 

sed -i  's/hello/world/g' hello.text

 

 

上面這行代碼,可以在 linux 上運行,作用是將找到的 hello 替換為 world,並且直接保存修改到文件。但是如果在 Mac 上,你會發現這行代碼會報錯。原因是在 Mac 上,sed 命令直接操作文件的時候,必須指定備份的格式,而在 linux 上,卻並沒有這個要求。

 

sed -i '' 's/hello/world/g' hello.php

 

 

如上面的代碼所示,在 -i 之后加上一對引號,來指定備份格式,如果不需要備份,引號里的內容可以為空。

 

插入文本需要換行

 

sed -i '' '1i\ hello ' hello.php

 

 

上面這行代碼,作用是往文件中插入 hello ,在 linux 下可以正常運行,但是在 Mac 上,啊哦,報錯。原因是使用 sed 命令往文件中插入文本時,必須在 1i 后面插入一個換行符正確代碼如下。例如你要在終端使用此命令,正確代碼如下,在 1i 后,敲個回車,然后繼續輸入后面的命令。

 

sed -i '' '1i\
hello' hello.php

 

 

因為我是使用 ruby 來調用 shell 腳本,因此會將命令寫在字符串中,在 ruby 中使用 sed 插入文本的代碼如下。

 

system "sed -i '' '1i\\'$'\n''hello' hello.php"

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM