文章目录
- Shell——文本处理命令
-
- 1、cut
- 2、awk
Shell——文本处理命令 1、cut cut 命令用于显示每行从开头算起 num1 到 num2 的字符,字节和字段,并将这些字符,字节和字段输出。
语法格式
cut [参数] 文件名
参数:
- -c :以字符为单位进行分割,后面加n表示取第几列,如-c 3。
- -d :自定义分隔符,默认分隔符为制表符
“\t”
。 - -f :指定提取第几列。
使用实例以空格为分隔符,截取并输出文本cut.txt的第一列字符:
[root@haoming home]# cat cut.txt
jin mao
jing xian
ling xia
long cai
chi neng
lan chi
fen ji
[root@haoming home]# cut -d " " -f 1 cut.txt
jin
jing
ling
long
chi
lan
fen
结合管道符的使用:搜索passwd文件,以冒号为分隔符,截取第1,6,7列
[root@haoming home]# cat /etc/passwd |grep bash$
root:x:0:0:root:/root:/bin/bash
mysql:x:997:1001::/home/mysql:/bin/bash
es:x:1001:1002::/home/es:/bin/bash
[root@haoming home]# cat /etc/passwd | grep bash$| cut -d ":" -f 1,6,7
root:/root:/bin/bash
mysql:/home/mysql:/bin/bash
es:/home/es:/bin/bash
结合管道符的使用:以冒号为分隔符,截取第三个冒号前面的所有列:
cut -d ":" -f -3
:截取第三个冒号前面的所有列cut -d ":" -f 3-
:截取第三列往后所有列
[root@haoming home]# cat /etc/passwd | grep bash$| cut -d ":" -f -3
root:x:0
mysql:x:997
es:x:1001
2、awk awk 命令是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。
语法格式
awk [参数] '脚本命令' 文件名
参数:
- -F fs : 指定以 fs 作为输入行的分隔符,awk 命令默认分隔符为空格或制表符。
- -f file : 从脚本文件中读取 awk 脚本指令,以取代直接在命令行中输入指令。
- -v var=val : 在执行处理过程之前,设置一个变量 var,并给其设备初始值为 val。
使用实例【Linux|Shell——文本处理命令】以冒号为分隔符,搜索passwd文件中以root开头的所有行,并输出行的第一列和七列,并以逗号分割:
[root@haoming home]# cat /etc/passwd | awk -F ":" '/^root/{print $1","$7}'
root,/bin/bash
- $0 代表整个文本行
- $n 代表文本行中的第 n 个数据字段
BEGIN 和 AND关键字BEGIN 会强制 awk 在读取数据前执行该关键字后指定的脚本命令
END 会在awk读完数据后执行该关键字后指定的脚本命令
awk 'BEGIN {print "USERNAME"}
awk 'BEGIN {print "PASSWORD"}
-v 自定义变量的使用把所有的用户id加上指定的数 i:
-v i=1:定义变量i,初始值为1,这样脚本命令中的变量 i 就不用修改,在外面修改 i 的值即可
#查询所有的用户id
[root@haoming home]# cat /etc/passwd | awk -v i=1 -F ":" '{print $3}'
0
1
2
3
4
5
6
7
997
1001
996
#所有的用户id+1
[root@haoming home]# cat /etc/passwd | awk -v i=1 -F ":" '{print $3+i}'
1
2
3
4
5
6
7
8
998
1002
997
#所有的用户id+5
[root@haoming home]# cat /etc/passwd | awk -v i=5 -F ":" '{print $3+i}'
5
6
7
8
9
10
11
12
1002
1006
1001
推荐阅读
- linux|windows远程linux主机
- Linux|【Linux】信号(1)认识、记录和产生信号
- linux|Linux 软链接 和 硬链接
- Linux基础|Linux基本操作命令
- 【技术杂文】系列|嵌入式端的神经网络算法部署和实现综合
- 三种方法检查ssl证书
- Linux|转载(Linux的二号功臣-Alan Cox)
- GNU、Linux和GNU/Linux之间的关系
- 内核|linux(使用yum安装_首次使用Linux:30个安装案例)