1.linux三剑客介绍:
awk、grep、sed被称为Linux文本三大利器,合称为文本三剑客,也是必须掌握的Linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也是最复杂。grep更适合单纯的查找或文本匹配,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。
2.grep用法介绍
grep 擅长过滤
1. -n 显示行号
grep -n 'mysql' 123.txt
显示123.txt文件中包含mysql内容的数据,并显示行号。
2. -c 显示筛选数据的数量
grep -c 'mysql' 123.txt
显示123.txt文件中包含mysql内容的的行数:
3. -i 不分筛选数据的大小写
grep -c -i 'MYSQL' 123.txt
把筛选的数据变成大写,依然可以筛选出75条数据。
4. -v 取反
grep -n -i 'MYSQL' 123.txt
使用取反,过滤出来的数据都不含mysql
5.-o 只显示匹配到的内容
grep -o 'mysql' 123.txt
只显示匹配到的内容
6. -E 使用扩展正则表达式
grep -o -E '..sql' 123.txt
显示正则能匹配到的内容
7. -P 使用perl正则表达式
grep -P '\d{1,3}' 123.txt
筛选出123.txt文件中包含数字长度为1-3的内容
3.sed用法介绍
用法: sed [-nri][动作] 目标文件
1.sed -n /筛选数据/p 目标文件 筛选出123.txt文件中的数据
显示1到5行的数据
sed -n '1,5p' 123.txt
sed -n /mysql/p 123.txt
2. d 动作为删除
把文本中包含world的内容删除
sed '/world/d' 12.txt
原本内容
hello world 内容被删除
注:删除的是显示内容,不是文本内的内容。
3. sed -i 修改目标文件
sed -i '/筛选内容/d' 目标文件
sed -i '/world/d' 12.txt
把文本中包含world的内容从目标文件直接删除
发现文件中的hello world 已经被删除了
4. a动作表示 指定行后面插入一行
sed -i '2a hello world' 12.txt
命令表示在第二行后面加hello world
5. i 动作
在所选行前面加内容
sed -i '2i hello 123' 12.txt
6. s 动作是替换
sed -i 's#hello#hi#g' 12.txt
把12.txt文件中hello替换为hi
需要I忽略大小写,全局替换需要g
4.awk用法
擅长取列
用法:
1. $数字 显示第几行数据
awk '{print $1}' 12.txt
取出12.txt 文件的第一列,默认以空格为分割符
显示$1 显示第一列数据, $2显示第二列数据
2. awk -F 修改默认分割方式
awk -F ':' '{print $1,$NF}' /etc/passwd
修改默认分隔符为':' 并打印第一列和最后一列,$NF表示最后一列
3. NR 显示几行数据
awk 'NR<3{print $1}' 12.txt
显示12.txt 中的前两行数据的第一列