mac终端修改文本文件指定字符有三种核心方式:sed(系统自带、适合简单替换)、perl(支持unicode、中文友好)、vim命令模式(适合复杂逻辑),选择取决于是否保留原文件、是否含中文及是否需正则匹配。
mac 终端修改文本文件中指定字符,核心是用命令行工具批量替换或删除内容,不依赖图形界面。常用且可靠的方式有三种:sed(系统自带、适合简单替换)、perl(支持 unicode、中文友好)、以及 vim 的批量命令模式(适合精准编辑)。选哪种取决于你是否要保留原文件、是否含中文、是否需正则匹配。
用 sed 替换指定字符(最常用)
sed 是 macOS 原生支持的流编辑器,适合快速全局替换。注意 macOS 的 sed 与 Linux 语法略有不同,备份原文件更安全:
- 将 test.txt 中所有 abc 替换为 xyz,并生成新文件:
sed 's/abc/xyz/g' test.txt > new.txt - 直接修改原文件(自动加 .bak 备份):
sed -i '.bak' 's/abc/xyz/g' test.txt - 删除某行中所有空格(只删该行内空格):
sed 's/ //g' test.txt - 替换含斜杠 / 的路径(改用 # 作分隔符避免冲突):
sed 's#/usr/local#/opt#g' config.txt
用 perl 处理中文或特殊字符
当文件含中文、emoji 或需要更严谨的 UTF-8 处理时,perl 比 sed 更稳:
- 把所有中文“测试”替换成“demo”:
perl -CSD -pe 's/测试/demo/g' file.txt > new.txt - 删除每行开头的编号和短横线(如 1- 、2- ):
perl -pe 's/^\d+-\s*//' list.txt - 原地修改并备份:
perl -CSD -i.bak -pe 's/旧文字/新文字/g' notes.md
用 vim 命令模式批量操作(适合复杂逻辑)
适合已有 vim 熟练度、需多条件判断或跨行操作的场景。无需打开交互界面,终端里一行搞定:
- 把 foo.txt 中所有 error 替换为 warn:
vim -c '%s/error/warn/g' -c 'wq' foo.txt - 仅替换第 10 到 20 行之间的 temp:
vim -c ':10,20s/temp/backup/g' -c 'wq' data.log - 删除所有空行:
vim -c '%s/^\s*$//e' -c 'wq' script.sh(/e避免报错)
操作前建议先用 head -n 5 filename 或 cat filename | grep "关键词" 确认目标内容是否存在。替换后可用 diff original.txt new.txt 快速核对差异。不需要额外安装工具,全部基于系统默认环境。











