sed命令在mac和linux下的區別

2022-02-13 19:45:53 字數 1088 閱讀 4684

前言

在 mac 上使用 sed 命令和 linux 上會有一定區別,主要是mac下必須指定備份格式,和mac下插入需要新增換行

# linux下success

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

上面這行**,可以在 linux 上執行,作用是將hello.text檔案中找到的 hello 替換為 world,並且直接儲存修改的內容到檔案裡。

如果在 mac 上執行上述命令,你會發現這行**會報錯。原因是在 mac 上,sed 命令直接操作檔案的時候,必須指定備份的格式,而在 linux 上,卻並沒有這個要求。

# mac下success

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

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

sed -i '' '1i\ hello ' hello.txt
上面這行**,作用是往檔案中插入 hello ,在 linux 下可以正常執行,但是在 mac 上,依然會報錯。

原因是使用 sed 命令往檔案中插入文字時,必須在 1i 後面插入乙個換行符正確**如下。

例如你要在終端使用此命令,正確**如下,在 1i 後,敲個回車,然後繼續輸入後面的命令。

sed -i '' '1i\

hello' hello.php

因為我是使用 ruby 來呼叫 shell 指令碼,因此會將命令寫在字串中,在 ruby 中使用 sed 插入文字的**如下。

system "sed -i '' '1i\\'$'\n''hello' hello.php"
使用變數,用雙引號

上面的例子替換了第二行內容為 [win32 = "vms setup 0.0.1.exe"]

在 Mac 上使用 sed 命令的幾個坑

sed i s hello world g hello.text上面這行 可以在 linux 上執行,作用是將找到的hello替換為world,並且直接儲存修改到檔案。但是如果在 mac 上,你會發現這行 會報錯。原因是在 mac 上,sed命令直接操作檔案的時候,必須指定備份的格式,而在 linu...

Linux命令 Sed命令引數

乙個命令寫了半天總是不對,原來時間久了就忘掉了。收藏自 table of contents 1.sed簡介 2.定址 3.sed命令 4.選項 5.元字符集 6.例項 7.指令碼 8.小技巧 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括...

Linux 命令sed 學習

sed常用的命令選項表 命令選項 功能描述 r支援正規表示式 i suffix 直接修改原始檔,如果設定了suffix 字尾名,sed會將資料備份 n silent 遮蔽預設輸出功能,預設sed會把匹配到的資料顯示到螢幕上 e指定需要執行的sed 指令,支援使用多個帶 e 引數 f指定需要執行的指令...