部署测试环境
- 部署测试环境:测试环境用容器来部署。这样可以保证所有开发人员环境统一。可以选择docker或者podman,选择对应compose编写部署文件。使用dockerfile编译与打包程序,可以减少自动化测试时环境造成的编译打包问题。
- 出现错误可以有多种选择。一,当应用有使用统一的日志管理中间件时可以直接后台查看日志;二,当使用容器部署测试时,可使用exec命令参数进入shell,查看日志目录与日志文件;三,当dockerfile导出日志数据卷时,可直接查看对应的导出目录;四,在shell中可以使用vim,cat,等命令查看日志文件。
- 当可执行文件权限不足时,可使用“ls -la 文件名”查看文件是否有执行权限以及文件属于的用户与用户组。若文件属于当前环境使用的用户,则使用chmod命令添加执行权限;若文件不属于当前用户,且当前用户不存在与文件所有者组中时,应人为判断是否可以修改文件所有者或组,亦或是将当前环境使用的用户加入所有者组中,使用chown进行修改。
基本正则表达式
扩展正则表达式
grep
正则表达式grep实战
```powershell [root@node4 tmp]# /tmp [root@node4 tmp]# mkdir data [root@node4 tmp]# [root@node4 tmp]# cd data
将/etc/passwd文件内容重定向到当前目录的pwd.txt文件下
[root@node4 data]# cat /etc/passwd > ./pwd.txt [root@node4 data]# [root@node4 data]# ll 总用量 4 -rw-r—r—. 1 root root 1134 11月 12 14:35 pwd.txt [root@node4 data]# cat pwd.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin chrony:x:997:995::/var/lib/chrony:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin es:x:1000:1000::/home/es:/bin/bash [root@node4 data]# [root@node4 data]# vim pwd.txt
-i表示忽略大小写查找出含有root的所有行
[root@node4 data]# grep -i “root” pwd.txt root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin
-n表示显示行号
[root@node4 data]# grep -i -n “root” pwd.txt 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
-c统计匹配结果的行数
[root@node4 data]# grep -i “root” pwd.txt -c 2
带行号输出
[root@node4 data]# cat -n luffy.txt 1 I am oldboy teacher 2 I teacher linux 3 I like python 4 5 My qq is 877348180. 6 7 My name is chaoge. 8 9 Our school website is http://oldboyedu.com
找出所有空行
[root@node4 data]# grep ‘^$’ luffy.txt
[root@node4 data]# grep ‘^$’ luffy.txt -n 4: 6: 8:
[root@node4 data]# grep ‘^$’ luffy.txt -c 3
找出没有空行的行
[root@node4 data]# grep ‘^$’ luffy.txt -n -v 1:I am oldboy teacher 2:I teacher linux 3:I like python 5:My qq is 877348180. 7:My name is chaoge. 9:Our school website is http://oldboyedu.com
[root@node4 data]# cat luffy.txt I am oldboy teacher I teacher linux I like python
My qq is 877348180.
My name is chaoge.
Our school website is http://oldboyedu.com
我是注释行
过滤掉注释行和空行
[root@node4 data]# grep ‘^#’ luffy.txt -v | grep ‘^$’ -v I am oldboy teacher I teacher linux I like python My qq is 877348180. My name is chaoge. Our school website is http://oldboyedu.com
![image.png](https://cdn.nlark.com/yuque/0/2022/png/22523384/1668235066379-6c13bb2d-729d-40e0-8080-684c506dde53.png#averageHue=%23252423&clientId=u5c127131-a775-4&from=paste&height=918&id=ue778f3e6&originHeight=918&originWidth=923&originalType=binary&ratio=1&rotation=0&showTitle=false&size=86778&status=done&style=none&taskId=u688b23f4-068e-487c-935c-93dd277398e&title=&width=923)<br />![image.png](https://cdn.nlark.com/yuque/0/2022/png/22523384/1668235116307-7852329b-0530-4d1e-9a9e-cdc67809a8f6.png#averageHue=%23262422&clientId=u5c127131-a775-4&from=paste&height=920&id=ua2212bc0&originHeight=920&originWidth=790&originalType=binary&ratio=1&rotation=0&showTitle=false&size=83164&status=done&style=none&taskId=u2d1285d8-10d7-4b21-a74d-e6ee840ec24&title=&width=790)
<a name="F3LFf"></a>
### ^符的用法
```powershell
# 找出所有m开头的行
[root@node4 data]# grep '^m' luffy.txt
# 找出所有m开头的行,忽略大小写
[root@node4 data]# grep -i '^m' luffy.txt
My qq is 877348180.
My name is chaoge.
# 找出所有i开头的行
[root@node4 data]# grep '^i' luffy.txt
# 找出所有i开头的行,忽略大小写
[root@node4 data]# grep -i '^i' luffy.txt
I am oldboy teacher
I teacher linux
I like python
$符的用法
[root@node4 data]# cat -n luffy.txt
1 I am oldboy teacher
2 I teacher linux
3 I like python
4
5 My qq is 877348180.
6
7 My name is chaoge.
8
9 Our school website is http://oldboyedu.com
10 #我是注释行
# 此处将.当做正则表达式处理,匹配一个或多个
[root@node4 data]# grep -n '.$' luffy.txt
1:I am oldboy teacher
2:I teacher linux
3:I like python
5:My qq is 877348180.
7:My name is chaoge.
9:Our school website is http://oldboyedu.com
10:#我是注释行
# 在.前面加上转义字符\
[root@node4 data]# grep -n '\.$' luffy.txt
5:My qq is 877348180.
7:My name is chaoge.
[root@node4 data]# grep -n '/bin/bash$' pwd.txt
1:root:x:0:0:root:/root:/bin/bash
25:es:x:1000:1000::/home/es:/bin/bash
# -o表示只显示需要匹配的内容
[root@node4 data]# grep -n '/bin/bash$' pwd.txt -o
1:/bin/bash
25:/bin/bash
# -v表示只显示不以/bin/bash结尾的行
[root@node4 data]# grep -n '/bin/bash$' pwd.txt -v
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
15:dbus:x:81:81:System message bus:/:/sbin/nologin
16:polkitd:x:999:998:User for polkitd:/:/sbin/nologin
17:libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
18:abrt:x:173:173::/etc/abrt:/sbin/nologin
19:rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
20:sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
21:postfix:x:89:89::/var/spool/postfix:/sbin/nologin
22:ntp:x:38:38::/etc/ntp:/sbin/nologin
23:chrony:x:997:995::/var/lib/chrony:/sbin/nologin
24:tcpdump:x:72:72::/:/sbin/nologin
.符号的用法
“.”表示任意一个字符,有且只有一个,不包含空行
[root@node4 data]# cat -n luffy.txt
1 I am oldboy teacher
2 I teacher linux
3 I like python
4
5 My qq is 877348180.
6
7 My name is chaoge.
8
9 Our school website is http://oldboyedu.com
[root@node4 data]# grep -i -n "." luffy.txt
1:I am oldboy teacher
2:I teacher linux
3:I like python
5:My qq is 877348180.
7:My name is chaoge.
9:Our school website is http://oldboyedu.com
10:#我是注释行
[root@node4 data]# grep -i -n ".s" luffy.txt
5:My qq is 877348180.
7:My name is chaoge.
9:Our school website is http://oldboyedu.com
\转义字符
找出文中所有的点“.”
[root@node4 data]# grep -i -n "\." luffy.txt
5:My qq is 877348180.
7:My name is chaoge.
9:Our school website is http://oldboyedu.com
*符号的用法
# 贪婪匹配
[root@node4 data]# grep -n ".*e" luffy.txt
1:I am oldboy teacher
2:I teacher linux
3:I like python
7:My name is chaoge.
9:Our school website is http://oldboyedu.com
[abc]中括号
[root@node4 data]# grep '[a-z]' luffy.txt
I am oldboy teacher
I teacher linux
I like python
My qq is 877348180.
My name is chaoge.
Our school website is http://oldboyedu.com
[root@node4 data]# grep '[A-Z]' luffy.txt
I am oldboy teacher
I teacher linux
I like python
My qq is 877348180.
My name is chaoge.
Our school website is http://oldboyedu.com
[root@node4 data]# grep '[A-Z0-9]' luffy.txt
I am oldboy teacher
I teacher linux
I like python
My qq is 877348180.
My name is chaoge.
Our school website is http://oldboyedu.com
扩展正则表达式实战
+号用法
+号表示匹配前一个字符1次或多次,必须使用grep -E扩展正则
[root@node4 data]# grep -E "i+" luffy.txt
I teacher linux
I like python
My qq is 877348180.
My name is chaoge.
Our school website is http://oldboyedu.com
[root@node4 data]# grep -E "ch+" luffy.txt
I am oldboy teacher
I teacher linux
My name is chaoge.
Our school website is http://oldboyedu.com
?符号用法
匹配前一个字符0次或1次
[root@node4 data]# cat test.tx
gooooooooooood
god
gd
gooooood
[root@node4 data]# grep -E "go?d" test.tx
god
gd
|符号用法
|符号表示或者的意思
[root@node4 data]# find /tmp/data -name "*.tx*"
/tmp/data/pwd.txt
/tmp/data/luffy.txt
/tmp/data/test.tx
[root@node4 data]# find /tmp/data -name "*.tx*" | grep -E "l|e"
/tmp/data/luffy.txt
/tmp/data/test.tx
[root@node4 data]#
[root@node4 data]#
()小括号用法
[root@node4 data]# cat test.txt
gooooooooooood
god
gd
gooooood
glad
good
gooooood
[root@node4 data]# grep -E "good|glad" test.txt
glad
good
[root@node4 data]#
[root@node4 data]# grep -E "g(oo|la)d" test.txt
glad
good
{n,m}匹配次数
重复前一个字符各种次数,可以通过-o参数显示明确的匹配过程
[root@node4 data]# cat test1.txt
yyyyyyyu
ccccccchao
yyyu
yuchaooooooo
[root@node4 data]# grep -E "y{2,4}" test1.txt
yyyyyyyu
yyyu
sed
sed案例
[root@node4 data]# cat -n luffycity.tx
1 My name is chaoge.
2 I teacher linux.
3 I like play computer game.
4 My qq is 877348180.
5 My school website is http://oldboyedu.com
6 #我是注释行
1、输出文件第2、3行的内容
[root@node4 data]# sed "2,3" luffycity.tx
sed:-e 表达式 #1,字符 3:遗漏命令
# 默认输出所有内容(符合规则 + 不符合规则的内容都输出)
[root@node4 data]# sed "2,3p" luffycity.tx
My name is chaoge.
I teacher linux.
I teacher linux.
I like play computer game.
I like play computer game.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
# -n表示只输出符合规则的内容行
[root@node4 data]# sed "2,3p" luffycity.tx -n
I teacher linux.
I like play computer game.
# 2,+3p表示从第二行开始向下输出打印三行内容
[root@node4 data]# sed "2,+3p" luffycity.tx -n
I teacher linux.
I like play computer game.
My qq is 877348180.
My school website is http://oldboyedu.com
2、过滤出含有linux的字符串行
# sed可以实现grep的过滤效果,必须把要过滤的内容放在双斜杠中
[root@node4 data]# sed "/linux/p" luffycity.tx
My name is chaoge.
I teacher linux.
I teacher linux.
I like play computer game.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
[root@node4 data]# sed "/linux/p" luffycity.tx -n
I teacher linux.
3、删除有game的行
[root@node4 data]# sed "/game/p" luffycity.tx
My name is chaoge.
I teacher linux.
I like play computer game.
I like play computer game.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
# 删除有game的行,此时只在内存中删除
[root@node4 data]# sed "/game/d" luffycity.tx -n
[root@node4 data]#
[root@node4 data]# sed "/game/d" luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
I like play computer game.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
# 直接将修改结果写入文件,即硬删除
[root@node4 data]# sed "/game/d" luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
#我是注释行
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
My school website is http://oldboyedu.com
My school website is http://oldboyedu.com
My school website is http://oldboyedu.com
My school website is http://oldboyedu.com
My school website is http://oldboyedu.com
[root@node4 data]#
[root@node4 data]# sed '4,$d' luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
[root@node4 data]#
[root@node4 data]# sed '5,$d' luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
# 删除第五行到末尾的内容
[root@node4 data]# sed '5,$d' luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
4、将文件中的My全部替换为His
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
[root@node4 data]# sed 's/My/His/g' luffycity.tx
His name is chaoge.
I teacher linux.
His qq is 877348180.
His school website is http://oldboyedu.com
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 877348180.
My school website is http://oldboyedu.com
[root@node4 data]# sed 's/My/His/g' luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
His name is chaoge.
I teacher linux.
His qq is 877348180.
His school website is http://oldboyedu.com
5、批量替换
[root@node4 data]# cat luffycity.tx
His name is chaoge.
I teacher linux.
His qq is 877348180.
His school website is http://oldboyedu.com
[root@node4 data]#
[root@node4 data]# sed -e 's/His/My/g' -e 's/877348180/12345678/g' luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 12345678.
My school website is http://oldboyedu.com
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
His name is chaoge.
I teacher linux.
His qq is 877348180.
His school website is http://oldboyedu.com
[root@node4 data]#
[root@node4 data]# sed -e 's/His/My/g' -e 's/877348180/12345678/g' luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 12345678.
My school website is http://oldboyedu.com
6、追加命令
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
My qq is 12345678.
My school website is http://oldboyedu.com
# 2a表示在第2行后面添加一行内容
# 2i表示在第二行前面添加一行内容
[root@node4 data]# sed -i '2a I am useing sed command' luffycity.tx
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
I am useing sed command
My qq is 12345678.
My school website is http://oldboyedu.com
# \n表示换行输出多行
[root@node4 data]# sed '3a I am useing sed command.\nI like you.' luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
I teacher linux.
I am useing sed command
I am useing sed command.
I like you.
My qq is 12345678.
My school website is http://oldboyedu.com
在每行后面插入新内容
[root@node4 data]# sed 'a -------------------' luffycity.tx
My name is chaoge.
-------------------
I teacher linux.
-------------------
I am useing sed command
-------------------
I am useing sed command.
-------------------
I like you.
-------------------
My qq is 12345678.
-------------------
My school website is http://oldboyedu.com
-------------------
[root@node4 data]#
[root@node4 data]# sed 'a -------------------' luffycity.tx -i
[root@node4 data]#
[root@node4 data]# cat luffycity.tx
My name is chaoge.
-------------------
I teacher linux.
-------------------
I am useing sed command
-------------------
I am useing sed command.
-------------------
I like you.
-------------------
My qq is 12345678.
-------------------
My school website is http://oldboyedu.com
-------------------
sed配合正则表达式企业案例
取出linux的IP地址
[root@node4 data]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:b2:94:02:c5 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
RX packets 5859 bytes 513911 (501.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4005 bytes 434572 (424.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 32 bytes 2592 (2.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 2592 (2.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node4 data]#
[root@node4 data]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
RX packets 5880 bytes 515607 (503.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4017 bytes 436276 (426.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node4 data]#
# 取出第二行的内容
[root@node4 data]# ifconfig ens33 | sed "2p" -n
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
# 去掉ip前后的内容
[root@node4 data]# ifconfig ens33 | sed "2p" -n | sed "s/^.*inet//" | sed "s/net.*$//"
192.168.195.104
[root@node4 data]# ifconfig ens33 | sed "2p" -n
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
[root@node4 data]#
[root@node4 data]# ifconfig ens33 | sed -e "2s/^.*inet//" -e "2s/net.*$//p" -n
192.168.195.104
awk
awk基础
awk场景
[root@node4 data]# cat chaoge.txt
pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
[root@node4 data]#
[root@node4 data]# awk '{print $1}' chaoge.txt
pyyu1
pyyu6
pyyu11
pyyu16
pyyu21
[root@node4 data]#
[root@node4 data]# awk '{print $2}' chaoge.txt
pyyu2
pyyu7
pyyu12
pyyu17
pyyu22
[root@node4 data]# awk '{print $0}' chaoge.txt
pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
awk内置变量
[root@node4 data]# awk '{print $2 $4 $5}' chaoge.txt
pyyu2pyyu4pyyu5
pyyu7pyyu9pyyu10
pyyu12pyyu14pyyu15
pyyu17pyyu19pyyu20
pyyu22pyyu24pyyu25
[root@node4 data]#
[root@node4 data]# awk '{print $2,$4,$5}' chaoge.txt
pyyu2 pyyu4 pyyu5
pyyu7 pyyu9 pyyu10
pyyu12 pyyu14 pyyu15
pyyu17 pyyu19 pyyu20
pyyu22 pyyu24 pyyu25
自定义输出内容
[root@node4 data]# awk '{print "第二列",$2,"第五列",$5,"第四列",$4}' chaoge.txt
第二列 pyyu2 第五列 pyyu5 第四列 pyyu4
第二列 pyyu7 第五列 pyyu10 第四列 pyyu9
第二列 pyyu12 第五列 pyyu15 第四列 pyyu14
第二列 pyyu17 第五列 pyyu20 第四列 pyyu19
第二列 pyyu22 第五列 pyyu25 第四列 pyyu24
[root@node4 data]#
[root@node4 data]# awk '{print "第二列:"$2,"第五列:"$5,"第四列:"$4}' chaoge.txt
第二列:pyyu2 第五列:pyyu5 第四列:pyyu4
第二列:pyyu7 第五列:pyyu10 第四列:pyyu9
第二列:pyyu12 第五列:pyyu15 第四列:pyyu14
第二列:pyyu17 第五列:pyyu20 第四列:pyyu19
第二列:pyyu22 第五列:pyyu25 第四列:pyyu24
awk参数
显示文件第三行
[root@node4 data]# cat -n chaoge.txt
1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
[root@node4 data]#
[root@node4 data]# awk 'NR==3{print $0}' chaoge.txt
pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
显示文件2-5行
[root@node4 data]# cat -n chaoge.txt
1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
[root@node4 data]#
[root@node4 data]# awk 'NR==2,NR==5{print $0}' chaoge.txt
pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
给每一行的内容添加行号
[root@node4 data]# cat -n chaoge.txt
1 pyyu1 pyyu2 pyyu3 pyyu4 pyyu5
2 pyyu6 pyyu7 pyyu8 pyyu9 pyyu10
3 pyyu11 pyyu12 pyyu13 pyyu14 pyyu15
4 pyyu16 pyyu17 pyyu18 pyyu19 pyyu20
5 pyyu21 pyyu22 pyyu23 pyyu24 pyyu25
# NF表示总列数
[root@node4 data]# awk '{print $1,$(NF-1),$(NF-2)}' chaoge.txt
pyyu1 pyyu4 pyyu3
pyyu6 pyyu9 pyyu8
pyyu11 pyyu14 pyyu13
pyyu16 pyyu19 pyyu18
pyyu21 pyyu24 pyyu23
取出IP地址
[root@node4 data]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:b2:94:02:c5 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
RX packets 7987 bytes 696327 (680.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5355 bytes 575490 (562.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 32 bytes 2592 (2.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 2592 (2.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node4 data]#
[root@node4 data]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
inet6 fe80::3b82:28c8:e41d:f145 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a9:bf:4b txqueuelen 1000 (Ethernet)
RX packets 8020 bytes 698979 (682.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5373 bytes 577790 (564.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@node4 data]# ifconfig ens33 | awk 'NR==2{print $0}'
inet 192.168.195.104 netmask 255.255.255.0 broadcast 192.168.195.255
[root@node4 data]#
[root@node4 data]# ifconfig ens33 | awk 'NR==2{print $2}'
192.168.195.104