Hom's Blog


sed原位修改-i选项

sed 可以进行源文件替换, 此时使用-i 选项

sed -i "s/text/replacment/g" testfile.txt

该命令在Linux正常运行. 然而该命令在Mac上就行不通了…

command i expects \ followed by text sed

这个i可以是c可以是别的.

原因是, Mac是使用的BSD不同, 需要 [ -i extension ], 需要进行强制备份. 需要一个字符串后接用来进行文件备份(追加文件名后). 例如

sed -i ".bak" "s/text/replacment/g" testfile.txt
# backup file: testfile.txt.bak
sed -i "" "s/text/replacment/g" testfile.txt
# in place

将生成testfile.txt.bak 文件保存原有文件. 若实在不需要备份, 可使用 -i ""

但随后我用相关命令处理*所以文件时出现错误:

RE error: illegal byte sequence

原因可能因为是对二进制文件处理的编码问题. 可以参见Stackoverflow的回答.

解决:

LC_ALL=C sed -i '' 's/_static\//static\//g' *


◆ 本文地址: http://platinhom.github.io/2015/12/02/sed_inplace/, 转载请注明 ◆

前一篇: W3School离线版去掉恼人的广告
后一篇: Jekyll下划线文件夹问题


Contact: Hom / 已阅读()
Source 类别: Coding  标签: Bash  Git