先舉個栗子:
sed -i 's/old_link/new_link/g' *
趕緊跑去一試,在gnu下是可以的,不過在os x下你應該會得到如下的返回結果:
command a expects \ followed by text
哎喲喂,別人都可以,為啥我的不信,特麼的,到底發生了什麼:
其實這個事情是這樣的,如果你想使用 -i 選項,你需要提供乙個備份檔案的副檔名,比如你當前目錄有兩個檔案,這兩個檔案都需要完成替換,兩個檔案分別是:
abc.txtxyz.txt
那麼你的命令就應該是:
sed -i '.original' 's/old_link/new_link/g' *
然後你得到了4個檔案:
abc.txtabc.txt.original
xyz.txt
xyz.txt.original
然後你再把 .original 的兩個檔案刪除就行了,可以使用:
rm -rf *.original
為啥會這樣呢?
那是因為沒有辦法找到乙個有效的命令滿足所有的情形:
sed -i -e ... - does not work on os x as it creates -e backupssed -i'' -e ... - does not work on os x 10.6 but works on 10.9+
sed -i '' -e ... - not working on gnu
所以,這個只是一種折衷的解決方案,over
sed 字串替換
1.sed替換的基本語法為 sed s 原字串 替換字串 單引號裡面,s表示替換,三根斜線中間是替換的樣式,特殊字元需要使用反斜線 進行轉義。2.單引號 是沒有辦法用反斜線 轉義的,這時候只要把命令中的單引號改為雙引號就行了,格式如下 要處理的字元包含單引號 sed s 原字串包含 替換字串包含 3...
sed 字串替換
1.sed替換的基本語法為 sed s 原字串 替換字串 單引號裡面,s表示替換,三根斜線中間是替換的樣式,特殊字元需要使用反斜線 進行轉義。2.單引號 是沒有辦法用反斜線 轉義的,這時候只要把命令中的單引號改為雙引號就行了,格式如下 要處理的字元包含單引號 sed s 原字串包含 替換字串包含 3...
shell下進行字串擷取
linux 的字串擷取很有用。有八種方法。假設有變數 var 1.號擷取,刪除左邊字元,保留右邊字元。複製 如下 echo 其中 var 是變數名,號是運算子,表示從左邊開始刪除第乙個 號及左邊的所有字元 即刪除 http 結果是 www.bitedu.com 123.htm 號擷取,刪除左邊字元,...