9.4/9.5 sed
sed 后面带p 匹配指定的行
- sed命令比grep更强大,除了拥有查找功能外,还拥有替换功能
- sed 可以实现grep的大部分功能 ,但是不显示颜色
1. # sed -n '/root/'p test.txt 或# sed -n '/1,5/'p test.txt
- 单引号内可以说字符串也可以是数字,如果是数字的话则表示第几行,或者行数范围;
- sed -n 是打印符合条件的行,p是print打印的意思
2. # sed -e '1'p -e '/bus/'p -n test.txt
- 打印第一行和带有bus字符串的行
3.# sed -n '/bus/'Ip test.txt
- 可以匹配大小写,I不区分大小写
sed 后面带d 删除指定的行
- 例子 在日志非常大的情况下,如何删除工作日志 (删除前5个月的日志)
- 用grep -n 确定多少行,匹配日期然后查看多少行
sed '1,25'd test.txt
- 列出指定范围内的行数 sed 'n'd仅仅是把行数在屏幕中显示出来,并没有删除
- 同样这里的n 可以说数字 也可以说字符串 ‘/abc/’
sed -i '1,25'd test.txt
- 删除指定范围内的行数
sed '1,10s/root/toor/g' test.txt
- 把test文件的1到10行中的root替换成toor
sed -r '1,10s/ro+/r/g' test.txt ###sed -r 脱意
- sed -e 进行多次命令,和;效果一行
- 正则中 | 表示或者,并且要sed两次表示
sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/' 1.txt
- 以:为分割符,将第一段和最后一段互相替换,([^:]+)表示非:前面的内容为1,(.*)表示一直到最后一个:前面的内容为2,([^:]+)表示非:后面面的内容为3
head test.txt |sed 's/[a-zA-Z]//g'
- 删除所有的英文字母 其中“//”代表为空 (把字母替换为空)
head test.txt |sed -r 's/(.*)/aaa:&/'
- 在所有的行前面加上指定的字符串
- (.*)表示一整行 &表示 / 前面内容的意思