sed
sed是一个非交互式的流文本编辑器,可实现增删改查,广泛适用于shell脚本中
工作原理
sed每次只从文本或标准输入中读取一行数据,将其拷贝到一个编辑缓冲区,然后对其如同命令一般处理,并显示出,
sed默认不直接修改文件,它只是显示到屏幕,-i:则修改文件
格式
sed [选项] '地址 编辑命令' 输入文件
shell 命令 | sed [选项] '地址 编辑命令'
sed [选项] -f sed sed脚本文件 输入文件
常用选项
- -e:指定要执行额度命令,只有一个编辑命令可省略
- -n:值输出处理后的行,读入时不显示,不对原文件修改
- -i:直接编辑文件
- -f: 从脚本文件中读取编辑命令执行
编辑命令格式
'地址 编辑命令'
地址:行数,正则表达式,$,没有地址则为全文
操作:
- p:打印
- d:删除
- s:替换字符串
- c:替换整行
- r:读取指定文件
- =:显示文件行号
- a:append,追加指定内容到行后
- i:inset,追加指定内容到行前
- w:另存为
- n:表示读入下一行内容
- H:复制到剪贴板
- g:将剪贴板中的内容覆盖到指定行
eg:
打印十二行内容:sed -n '12p' 文件名
输出3到5行内容:sed -n '3,5p' 文件名
输出所有奇数行:sed -n 'p;n' 文件名
输出1到5行的奇数行:sed -n '1,5{p;n}' 文件名
输出所有偶数行:sed -n 'n;p' 文件名
输出包含字母“H”的行:sed -n '/H/p' 文件名
输出最后一行:sed -n '$p' 文件名
删除第十六行:sed '16d' 文件名
删除空行:sed -i '/^$/d' 文件名
删除一和三行:sed -e '1d' -e '3d' 文件名 / sed '1d;3d' 文件名
替换o到O:sed 's/o/O/g' 文件名
以p为开头的行的行首加上#:sed '/^P/s/^/#/' 文件名
在每行行尾插入字符串EOF:sed 's/$/EOF/' 文件名
将第二行替换为AAAA:sed '2cAAAA' 文件名
将第五行到最后一行替换为两行AAAA,BBBB:sed '5.$cAAAA
BBBB' 文件名 (
换行)