在Mac和Linux系統上都能使用的sed原地編輯標誌是什麼?


我們知道,Linux 中的 **sed** 命令代表流編輯器,主要用於對檔案執行操作,這些操作通常包括搜尋單詞、替換單詞或插入內容等等。這是一個非常有用的命令,可以在 Linux 核心中找到。

還應該注意的是,OS X 附帶的 **BSD** (Berkeley Software Distribution) **sed** 需要 **-i** 標誌才能工作,而 **GNU** sed則不需要。

使 **GNU** 版本的 **sed** 在 Mac OS X 上執行的一種方法是直接安裝 **gnu-sed** 並使用預設名稱,這將確保您不必在兩個作業系統上執行不同的命令。

為了在 Mac OS X 上安裝 **gnu-sed**,您可以考慮以下步驟。

命令

brew install gnu-sed --with-default-names

這將安裝 **gnu-sed**,您可以像在其他 Linux 機器上一樣使用它。

一個更好的解決方案是使用下面顯示的命令,這是一個帶有副檔名 **.bak** 的原地替換命令,這將幫助您在 Mac OS X 和 GNU 上實現相同的命令。

命令

sed -i.bak ‘s/sample/new_sample’ filename

在上面的命令中,單引號中的字串意味著我們將檔案中特定的單詞替換為 **new_sample**。

現在讓我們首先在 GNU 上執行上面的命令,看看輸出結果。

GNU

$ sed --version | head -1
GNU sed version 4.2.2

$ echo 'sample' > 1.txt

$ sed -i.bak 's/sample/new_sample/' ./1.txt

$ ls
1.txt 1.txt.bak

$ cat ./1.txt
new_sample

Mac OS X

$ sed --version 2>&1 | head -1
sed: illegal option -- -

$ echo 'sample' > 1.txt

$ sed -i.bak 's/sample/new_sample/' ./1.txt

$ ls
1.txt
1.txt.bak

$ cat ./1.txt
new_sample

更新於:2021年7月31日

3K+ 瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.