目录
1.作用
对文本内容增删改查 (默认在模式空间执行)
## sed 临时生效(不改变文本内容) sed -i 永久生效(改变文本内容)
2.工作流程
读取 执行 显示
3.命令
-e 对多文件操作/多操作 -f 用指定脚本运行
-i 直接修改目标文本(慎用) -n 取消默认输出
4.操作符
s 替换(字符串) c 替换(行) y 替换(字符 替换前后长度一致) d 删除
a 增加(下一行) i 增加(上一行) p 打印 r 扩展正则表达
## sed处理量过大文件 执行慢
split -l -行数 文件名 se 按行分割
split -b 大小 文件名 se 按大小分
5.删除
sed 'd' 文件名 sed -i 'd' 文件名 删除全部内容(不删除文件)
sed -n '3d;p' 文件名 删除第三行
sed -n '5,$d;p' 文件名 从第五行删到最后一行
## 不删除文件的情况下删内容
cat /dev/null > 文件名
sed -i 'd' 文件名
## 删除空行的三种方法 grep -v "^$" 文件名
cat 文件名 | tr -s "\n"
sed '/^$/d' 文件名
6.替换
s 字符串 c 行 y 字符
sed -n 's/内容1/内容2/p' 文件名 每行第一个内容1换成内容2
sed -n 's/内容1/内容2/2p' 文件名 换第二个内容
sed -n 's/内容1/内容2/gp' 文件名 全文替换
字母大小写替换
sed 's/[a-z]/ \U &/g' 小写换成大写
sed 's/[A-Z]/\l &/g' 大写换成小写
sed 's/[a-z]/\u&/' 首字母大写
换行
sed '/内容1/c 内容2' 文件名 内容1整行换成内容2
添加
a 下一行 i 上一行 r 行后读文件
sed '/内容1/a 内容2' 文件名 内容1下一行输入内容2
sed '$r 文件2' 文件1 文件2内容插入文件1最后
7.分组 位置替换 (字符串)
echo ft123 | sed -r 's/(ft)(123)/\2\1/' 123ft
echo ft1234 | sed -r 's/(ft)(1)(2)(3)(4)/\5\4\3\2\1/' 4321ft
-f 用第一个文件内容的指定命令对第二个文件进行处理
sed -f 文件1 文件2
echo "s/ /_/g" > 1
echo "good job
nice work" > 2
sed -f 1 2 good_job nice_work