linux三剑客
- awk
- sed
- grep
sed:流编辑器(stream editor)
主要功能:增删改查
#sed格式:sed [选项] [sed内置命令字符] 文件
选项 | 含义 |
---|---|
- n | 取消默认输出 |
- i | 修改内容而不是输出到终端 |
-r | 支持扩展正则 |
sed内置命令字符
字符 | 解释说明 |
---|---|
a | #全拼append,表示追加文本>>,在指定行后添加一行或多行文本※ |
d | #全拼delete,表示删除匹配行 |
i | #全拼insert,表示插入文本,在指定行前添加一行或多行文本※ |
p | #全拼print,表示打印匹配行的内容,通常p会与选项-n一起使用※ |
创建环境
[root@libielang /oldboy]# cat -n lidao.txt
1 101,oldboy,CEO
2 102,zhangyao,CTO
3 103,Alex,COO
4 104,yy,CFO
5 102,zhangyao,CTO
6 103,Alex,COO
查找指定的一行
[root@libielang /oldboy]# sed -n '3p' lidao.txt
103,Alex,COO
3p,指定查找第三行
查找连续多行
[root@libielang /oldboy]# sed -n '1,3p' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
'1,3p’查询第1行到第3行
查询不连续的行
[root@libielang /oldboy]# sed -n '1p;4p' lidao.txt
101,oldboy,CEO
104,yy,CFO
查询第1行和第4行
a
:在指定行下面一行添加
[root@libielang /oldboy]# sed '2aI love xxx' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
I love xxx ##添加写入的行
103,Alex,COO
104,yy,CFO
102,zhangyao,CTO
103,Alex,COO
在第二行下面一行添加一行
i
:在指定行上面写入一行
[root@libielang /oldboy]# sed '2iI love xxx' lidao.txt
101,oldboy,CEO
I love xxx ##写入的位置
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
102,zhangyao,CTO
103,Alex,COO
在第二行上面一行写入
**c
:把指定行内容清空在写入
[root@libielang /oldboy]# sed '4cI love xxx' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
I love xxx
102,zhangyao,CTO
103,Alex,COO
把第四行内容清空再写入
**d
:删除(delete)
[root@libielang /oldboy]# sed '3d' lidao.txt
101,oldboy,CEO
102,zhangyao,CTO
104,yy,CFO
102,zhangyao,CTO
103,Alex,COO
删除第三行
s
:替换
[root@libielang /oldboy]# sed 's#zhangyao#lidao#g' lidao.txt
101,oldboy,CEO
102,lidao,CTO
103,Alex,COO
104,yy,CFO
102,lidao,CTO
103,Alex,COO
将文件里的zhangyao替换为lidao
格式:s#xxx#yyy#g
s:替换 。g:全局替换
xxx要替换的内容,yyy替换为什么。#分隔符
命令参数补充
命令grep
参数 | 功能说明 |
---|---|
-A | #显示出grep找出的内容及下面的指定行数 |
-B | #显示出grep找出的内容及上面的指定行数 |
-C | #显示出grep找出的内容及上下指定的行号(-C== -A -B) |
-c | #统计包含内容的行数 |
-R | #递归进行过滤 |
-l | #只显示包含过滤内容的文件名,不显示文件内容 |