ed的历史地位与基本特性
作为Unix系统最原始的文本编辑器,ed诞生于1971年,比vi还早5年。它采用行编辑模式,命令格式为[地址]命令[参数]
。例如:
1,3p # 打印1-3行 s/old/new/g # 全局替换 wq # 保存退出
被忽视的现代应用场景
1. 自动化脚本处理
在CI/CD流水线中,ed脚本可以非交互式修改配置文件。比如自动更新版本号:
#!/bin/sh ed -s package.json <2. 极简环境开发
在Docker最小化镜像(如alpine)中,ed往往是唯一内置的编辑器。调试容器时:
docker exec -it my_container ed /etc/nginx/conf.d/default.conf3. 二进制安全编辑
相比sed,ed能正确处理包含NUL字节的文件。修改二进制配置文件:
ed -s data.bin <<END 1r header.bin wq END高级技巧实例
宏录制与回放
ed支持将操作序列保存为宏文件:
# 录制宏 ed file.txt <<EOF 1,3d .,$s/foo/bar/g wq EOF # 批量应用 find . -name "*.txt" -exec ed -s {} < macro.ed \;与现代工具链集成
结合jq处理JSON时,ed可以精准修改特定字段:
line=$(jq -n 'input_line_number' < data.json) ed data.json <<EOF ${line}s/\"value\":.*/\"value\": \"new\"/ wq EOF性能对比测试
处理1GB日志文件时的耗时比较:
工具 内存占用 执行时间 sed 1.2GB 45s ed 8MB 28s vim 500MB 无法打开