sed: 1: “…”: invalid command code . on Mac OS

今天遇到個需求,需要批量替換多個文件中的一個字符串,結果踩坑了,記錄一下。

在linux下我們會想到用下面這個命令
sed -i "s/oldstring/newstring/g" grep -rl oldstring ./
結果在mac下使用時報了錯
sed: 1: “…”: invalid command code . on Mac OS

man sed查看了下 sed命令的操作手冊

sed [-Ealn] [-e command] [-f command_file] [-i extension] [file ...]

在這裏插入圖片描述
意思是,-i 第一個參數得是個備份文件,防止磁盤空間消耗完導致文件丟失,如果我們不想備份的話可以這樣

sed -i "" "s/oldstring/newstring/g" grep -rl oldstring ./

如果要備份的話,寫個備份文件

sed -i "test.bak" "s/oldstring/newstring/g" grep -rl oldstring ./

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章