sed命令,采用的是流编辑模式,最明显的特点是,在sed处理数据之前,需要预先提供一组规则,sed按照此规则来编辑数据
sed文本处理工具的用法:
- 用法1:前置命令 | sed [选项] ‘条件指令’
- 用法2:sed [选项] ‘条件指令’ 文件.. ..
规则:
- 条件可以是行号或者/正则/
- 没有条件时,默认为所有条件
- 指令可以是增、删、改、查等
- 默认sed会将所有输出的内容都打印出来,可以使用-n屏蔽默认输出
- 选项中可以使用-r选项,让sed支持扩展正则
sed命令的常用基本选项
- -n(屏蔽默认输出,默认sed会输出读取文档的全部内容)
- -r (让sed支持扩展正则)
- -i (sed直接修改源文件,默认sed只是通过内存临时修改文件,源文件无影响)
sed命令的-n选项
打印第四行
sed -n '4p' /etc/passwd
打印第3到5行
sed -n '3,5p' /etc/passwd
打印第3和5行
sed -n '3p;5p' /etc/passwd
打印奇数行
sed -n '1~2p' /etc/passwd
打印偶数行
sed -n '2~2p' /etc/passwd
打印包含root的行
sed -n '/root/p' /etc/passwd
打印bash结尾的行
sed -n '/bash$/p' /etc/passwd
sed -n 'p' /etc/passwd
sed命令的p指令案例
sed -n 'p' a.txt //输出所有行,等同于cat a.txt
sed -n '4p' a.txt //输出第4行
sed -n '4,7p' a.txt //输出第4~7行
sed -n '/^bin/p' a.txt //输出以bin开头的行
sed -n '$=' a.txt //输出文件的行数
sed命令的d指令案例
sed '3,5d' a.txt //删除第3~5行
sed '/xml/d' a.txt //删除所有包含xml的行
sed '/xml/!d' a.txt //删除不包含xml的行,!符号表示取反
sed '/^install/d' a.txt //删除以install开头的行
sed '$d' a.txt //删除文件的最后一行
sed '/^$/d' a.txt //删除所有空行
sed命令的s替换基本功能
vim test.txt //新建素材
2017 2011 2018
2017 2017 2024
2017 2017 2017
sed 's/2017/xxxx/' test.txt
sed 's/2017/xxxx/g' test.txt
sed 's/2017/xxxx/2' test.txt
sed 's/2017//2' test.txt
sed -n 's/2017/xxxx/p' test.txt
sed 's/xml/XML/' a.txt //将每行中第一个xml替换为XML
sed 's/xml/XML/3' a.txt //将每行中的第3个xml替换为XML
sed 's/xml/XML/g' a.txt //将所有的xml都替换为XML
sed 's/xml//g' a.txt //将所有的xml都删除(替换为空串)
sed 's#/bin/bash#/sbin/sh#' a.txt //将/bin/bash替换为/sbin/sh
sed '4,7s/^/#/' a.txt //将第4~7行注释掉(行首加#号)
sed 's/^#an/an/' a.txt //解除以#an开头的行的注释(去除行首的#号)
sed命令的多行文本处理
i: 在指定的行之前插入文本
a: 在指定的行之后追加文本
c: 替换指定的行
sed '2a XX' a.txt //在第二行后面,追加XX
sed '2i XX' a.txt //在第二行前面,插入XX
sed '2c XX' a.txt //将第二行替换为XX
版权声明:本文为qq_42383970原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。