前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详细grep、sed、awk

详细grep、sed、awk

作者头像
用户1173509
发布于 2018-03-28 04:46:00
发布于 2018-03-28 04:46:00
1.7K00
代码可运行
举报
文章被收录于专栏:CaiRuiCaiRui
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# cat 1.txt 
1
2
3
4
5
6
[root@VM_0_7_centos tmp]# cat 2.txt 
4
5
6
7
8

[root@VM_0_7_centos tmp]# grep -f 1.txt 2.txt 
4
5
6
[root@VM_0_7_centos tmp]# grep -f -v 1.txt 2.txt 
grep: -v: No such file or directory
[root@VM_0_7_centos tmp]# grep -v -f 1.txt 2.txt 
7
8

  -e匹配多个模式,-v反转输出,-f匹配多个文件中相同的行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# echo "11 22 33 44 55" |xargs -n1 | grep -e "11"
11
[root@VM_0_7_centos tmp]# echo "11 22 33 44 55" |xargs -n1 | grep -e "11" -e "22"
11
22

  -i忽略大小写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# echo "AA aa bb " | xargs -n1 | egrep -i "aa"
AA
aa

  -o只输出匹配内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# ifconfig 
eth0      Link encap:Ethernet  HWaddr 52:54:00:BE:3B:97  
          inet addr:172.17.0.7  Bcast:172.17.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9272287 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9005522 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1614323123 (1.5 GiB)  TX bytes:2170651985 (2.0 GiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:194402 errors:0 dropped:0 overruns:0 frame:0
          TX packets:194402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:213430544 (203.5 MiB)  TX bytes:213430544 (203.5 MiB)

[root@VM_0_7_centos tmp]# ifconfig | egrep "172.17.0.7"
          inet addr:172.17.0.7  Bcast:172.17.15.255  Mask:255.255.240.0
[root@VM_0_7_centos tmp]# ifconfig | egrep -o "172.17.0.7"
172.17.0.7

sed

流编辑器,过滤和替换文本。

工作原理:sed命令将当前处理的行读入模式空间进行处理,处理完把结果输出,并清空模式空间。然后再将下一行读入模式空间进行处理输出,以此类推,直至最后一行。

用法:sed [OPTION]... {script-only-if-no-other-script} [input-file]...

sed [选项] '地址 命令' file

选项

描述

-n

不打印模式空间

-e

执行脚本-表达式来处理

-f

脚本文件的内容添加到命令被执行

-i

修改源文件

-r

使用扩展正则表达式

命令

m描述

s/regexp/replacement/

t替换字符串

p

d打印当前模式空间

P

d打印模式空间的第一行

d

s删除模式空间,并且开始下一个循环

D

s删除模式空间的第一行,开始下一个循环

=

d打印当前行号

a \text

d当前行追加文本

i \text

d当前行上面插入文本

c \text

s所选行替换文本

q

l立即退出sed脚本

r

z追加文本来自文件

地址

m描述

first~step

b步长,每step行,从first开始

$

p匹配最后一行

/regexp/

z正则表达式匹配行

number

z只匹配制定行

addr1、addr2

k开始匹配addr1开始,直接addr2行结束

addr1,+N

c从addr1行开始,向后的N行

addr1,~N

c从addr1行开始,到N行结束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services 
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n "/blp5/p"  匹配第一行
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n "1p"   匹配第二行
nimgtw          48003/udp               # Nimbus Gateway
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n "2p"
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n "1,3p"  匹配1-3行
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# seq 10 | sed -n "1~2p"  从1开始,每次跳过一行
1
3
5
7
9
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n "$p"
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n '$p'  打印最后一行
iqobject        48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n '$!p'  不打印最后一行
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail /etc/services | sed -n '/^blp5/,/^com/p'  匹配从blp5到com开头(第一个)的
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services | sed '/blp5/d'  删除blp5行,不需要加-n
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services | sed 's/blp5/test/'  将blp5替换为test,(没有加全局就只修改第一个匹配到的字符串)
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
test            48129/tcp               # Bloomberg locator
test            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
[root@VM_0_7_centos tmp]# tail services | sed 's/blp5/test/g'  替换所有的blp5为test
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
test            48129/tcp               # Bloomberg locator
test            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services |sed '1,5s/blp5/test/g'  替换1-5行的blp5为test

nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
test            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services | sed 's/nimgtw/test/;s/udp/ll/'  对前面匹配到结果中的内容再进行匹配
test          48003/ll               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/ll               # Image Systems Network Services
blp5            48129/tcp               # Bloomberg locator
blp5            48129/ll               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/ll               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/ll               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services | sed -r 's/(.*) ([0-9]+.*)(#.*)/\1/'
nimgtw         
3gpp-cbsp      
isnetserv      
isnetserv      
blp5           
blp5           
com-bardac-dw  
com-bardac-dw  
iqobject       
iqobject       
[root@VM_0_7_centos tmp]# tail services | sed -r 's/(.*) ([0-9]+.*)(#.*)/\1\2/'
nimgtw         48003/udp               
3gpp-cbsp      48049/tcp               
isnetserv      48128/tcp               
isnetserv      48128/udp               
blp5           48129/tcp               
blp5           48129/udp               
com-bardac-dw  48556/tcp               
com-bardac-dw  48556/udp               
iqobject       48619/tcp               
iqobject       48619/udp               
[root@VM_0_7_centos tmp]# tail services | sed -r 's/(.*) ([0-9]+.*)(#.*)/\1\2\3/'
nimgtw         48003/udp               # Nimbus Gateway
3gpp-cbsp      48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv      48128/tcp               # Image Systems Network Services
isnetserv      48128/udp               # Image Systems Network Services
blp5           48129/tcp               # Bloomberg locator
blp5           48129/udp               # Bloomberg locator
com-bardac-dw  48556/tcp               # com-bardac-dw
com-bardac-dw  48556/udp               # com-bardac-dw
iqobject       48619/tcp               # iqobject
iqobject       48619/udp               # iqobject
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# seq 10 |sed '/5/,+3s/^/#/'  加注释
1
2
3
4
#5
#6
#7
#8
9
10
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# seq 10 | sed '5s/.*/&\ntest/'  &的作用是取前面所匹配到的结果
1
2
3
4
5
test
6
7
8
9
10
[root@VM_0_7_centos tmp]# seq 10 | sed '5s/.*/test\n&/'
1
2
3
4
test
5
6
7
8
9
10
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# seq 10 |sed 'n;n;s/^/ll/'
1
2
ll3
4
5
ll6
7
8
ll9
10

awk

awk是一个处理文本的编程语言工具,能用简短的程序处理输入文件、数据排序、计算以及生产报表等等。

Linux系统下默认awk是gawk,它是awk的GUN版本。可以通过命令查看应用的版本:ll /bin/awk

基本的命令语法:awk option 'patten {action}' file

其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。

pattern参数可以是egrep正则表达式的任意一个,使用/re/再加上一些样式匹配,匹配方式与sed类似,也可以使用“,”分开两样式以选个某个范围。

awk处理的工作方式与数据库类似,支持对记录和字段处理,这也是grep和sed不能实现的。

在awk中,缺省的情况下将文本文件中一行视为一个记录,而将一行中的某一部分作为记录中的一个字段,用1,2,3....数字的方式顺序的表示行(记录)中的不同字段。用$后跟数字,引用对应的字段,以逗号分割,0表示整个行。

选项

m描述

-f program-file

c从文件中读取awk程序源文件

-F fs

z指定fs为输入字段分隔符

-v var=value

b变量赋值

--posix

z只支持POSIX正则表达式

Pattern

Description

BEGIN{ }

g给程序赋予初始状态,先执行的工作

END{ }

c程序结束之后执行的一些扫尾工作

/regular expression/

w为每个输入记录匹配正则表达式

pattern && pattern

l逻辑and,满足两个模式

pattern || pattern

逻辑或,满足其中一个模式

! pattern

l逻辑非,不满足模式

pattern1,pattern2

f范围模式,匹配所以1的记录,直到匹配到模式2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# tail services 
nimgtw          48003/udp               # Nimbus Gateway
3gpp-cbsp       48049/tcp               # 3GPP Cell Broadcast Service Protocol
isnetserv       48128/tcp               # Image Systems Network Services
isnetserv       48128/udp               # Image Systems Network Services
blp5            48129/tcp               # Bloomberg locator
blp5            48129/udp               # Bloomberg locator
com-bardac-dw   48556/tcp               # com-bardac-dw
com-bardac-dw   48556/udp               # com-bardac-dw
iqobject        48619/tcp               # iqobject
iqobject        48619/udp               # iqobject
[root@VM_0_7_centos tmp]# tail services | awk -F '/' '{print $1}'  指定/为分割符,打印出第一部分
nimgtw          48003
3gpp-cbsp       48049
isnetserv       48128
isnetserv       48128
blp5            48129
blp5            48129
com-bardac-dw   48556
com-bardac-dw   48556
iqobject        48619
iqobject        48619
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos ~]# awk -va="123" 'BEGIN{print a}'
123
[root@VM_0_7_centos ~]# a=456
[root@VM_0_7_centos ~]# awk -va=$a 'BEGIN{print a}'
456
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@Gin scripts]# awk '{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
.....................................................
 
[root@Gin scripts]# echo hhh|awk '{print "hello,world"}'
hello,world
 
[root@Gin scripts]# awk '{print "hiya"}' /etc/passwd
hiya
hiya
hiya
hiya
...............................................

调用awk时,指定/etc/passwd作为输入文件,执行awk时,它依次对/etc/passwd中的每一行执行print命令。

所有输出都发送到stdout,所得到的结果与执行cat /etc/passwd完全相同。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos ~]# awk -F":" '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
uucp
operator
games
gopher
ftp
nobody
vcsa
abrt
ntp
saslauth
postfix
sshd
dbus
tcpdump
cairui
nginx
mysql
zabbix
[root@VM_0_7_centos ~]# awk -F":" '{print $0}' /etc/passwd
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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
cairui:x:500:500::/home/cairui:/bin/bash
nginx:x:501:501::/home/nginx:/sbin/nologin
mysql:x:502:502::/home/mysql:/sbin/nologin
zabbix:x:503:503::/home/zabbix:/sbin/nologin

  打印1个100行文本的第20到30行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos ~]# seq 100 | awk '{if(NR>=20 && NR<=30) print $1}'
20
21
22
23
24
25
26
27
28
29
30
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk -F"[ ,]+" '{print $3" "$6}' test 
cai is
[root@VM_0_7_centos tmp]# cat test 
I am cai,my qq is
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk '{count++;print $0;} END{print "user count is ",count}' /etc/passwd
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
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
cairui:x:500:500::/home/cairui:/bin/bash
nginx:x:501:501::/home/nginx:/sbin/nologin
mysql:x:502:502::/home/mysql:/sbin/nologin
zabbix:x:503:503::/home/zabbix:/sbin/nologin
user count is  27
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# ll
total 16
-rw-r--r-- 1 root root  12 Mar 21 11:08 1.txt
-rw-r--r-- 1 root root  11 Mar 21 11:08 2.txt
-rw-r--r-- 1 root root 616 Mar 21 13:44 services
-rw-r--r-- 1 root root  18 Mar 22 14:30 test
[root@VM_0_7_centos tmp]# ll |awk 'BEGIN{size=0;} {size=size+$5} END{print "[end] size is ",size}'  统计所占的字节数
[end] size is  657

运算符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk 'BEGIN{a=5;a+=5;print a}'
10
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk 'BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}'
0 1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk 'BEGIN{a=11;if(a>=9){print "ok"}}'
ok
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk -F ":" 'NF==8{print $0}' ll  打印字段数为8的行
zabbix:x:503:503::/home/zabbix:/sbin/nologin:ll
[root@VM_0_7_centos tmp]# cat ll
tcpdump:x:72:72::/:/sbin/nologin
cairui:x:500:500::/home/cairui:/bin/bash
nginx:x:501:501::/home/nginx:/sbin/nologin
mysql:x:502:502::/home/mysql:/sbin/nologin
zabbix:x:503:503::/home/zabbix:/sbin/nologin:ll
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 52:54:00:BE:3B:97  
          inet addr:172.17.0.7  Bcast:172.17.15.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10059201 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9797173 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1673765442 (1.5 GiB)  TX bytes:2246121551 (2.0 GiB)

[root@VM_0_7_centos tmp]# ifconfig eth0 | awk -F [" ":]+ 'NR==2{print $4}'  NR==2是取第二行
172.17.0.7

正则

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@VM_0_7_centos tmp]# awk '/root/{print $0}' /etc/passwd  打印所有root行
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

awk中的if

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
        if ($1=="foo"){
                if($2=="foo"){
                        print "uno"
                }else{
                        print "one"
                }
        }elseif($1=="bar"){
                print "two"
        }else{
                print "three"
        }
}

  awk参考:https://www.cnblogs.com/ginvip/p/6352157.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux三剑客之awk命令详解及相关实例
awk是一个处理文本的编程语言工具,能用简短的程序处理标准输入或文件、数据排序、计算以及生成报表等等。 在Linux系统下默认awk是gawk,它是awk的GNU版本。可以通过命令查看应用的版本:ls -l /bin/awk 基本的命令语法:awk option 'pattern {action}' file 其中pattern表示AWK在数据中查找的内容,而action是在找到匹配内容时所执行的一系列命令。花括号用于根据特定的模式对一系列指令进行分组。 awk处理的工作方式与数据库类似,支持对记录和字段处理,这也是grep和sed不能实现的。 在awk中,缺省的情况下将文本文件中的一行视为一个记录,逐行放到内存中处理,而将一行中的某一部分作为记录中的一个字段。用1,2,3...数字的方式顺序的表示行(记录)中的不同字段。用$后跟数字,引用对应的字段,以逗号分隔,0表示整个行。
菲宇
2022/12/21
1.4K0
Linux-四剑客-find-awk-grep-sed解释----未完结版
find - search for files in a directory hierarchy 搜索目录层次结构中的文件 用来在指定目录下面查找文件或目录,任何位于参数之前的字符串都被视为想在那个目录下面查找
张琳兮
2018/09/10
2.4K0
练习题四
惨绿少年
2017/12/27
1.2K0
linux学习第二十六篇:正则介绍,grep,sed,awk命令
正则介绍 正则就是一串有规律的字符串,掌握好正则对于编写shell脚本有很大帮助,各种编程语言中都有正则,原理是一样的。正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。对于系统管理员来讲,正则表达式贯穿在我们的日常运维工作中,无论是查找某个文档,抑或查询某个日志文件分析其内容,都会用到正则表达式。其实正则表达式,只是一
用户1215343
2018/02/05
4.2K0
linux学习第二十六篇:正则介绍,grep,sed,awk命令
linux下文本比对sed与awk使用方法
sed 本身也是一个管线命令,可以分析 standard input ! 而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能!
小柒吃地瓜
2020/04/21
2.2K0
学习笔记0411----正则三剑客之sed、awk
awk -F ‘:’ ‘BEGIN{语句} {if(条件){语句1;语句2;语句3} } END{语句}’ filename
嘻哈记
2022/01/11
2.7K0
学习笔记0411----正则三剑客之sed、awk
shell文本处理工具sed、cut、awk
第二行后面加入两行字 使用\可以一次加多行,每一行之间都必须要以反斜杠 \ 来进行新行标记
丁D
2022/08/12
6410
grep与egrep
个人觉得egrep比较好用,感觉改良了grep的一些不可以直接操作的东西,但是总体来说还是没太大区别的,都是一个过滤工具。
拓荒者
2019/03/15
1.3K0
grep与egrep
4.shell编程-文本处理三剑客之sed
说明:“\1”和“&”的区别是“\1”可以反向引用匹配到的内容的一部分,然后对其修改,“&”只能对匹配的内容整体修改,不能拆分
zhang_derek
2019/07/04
4270
4.shell编程-文本处理三剑客之sed
五分钟入门文本处理三剑客grep awk sed
grep awk sed是Linux下文本处理常用的命令,能完成很多神奇的操作,今天就分享一下这三个命令最常见的用法
Java识堂
2020/05/27
7070
awk、sed、grep
[https://www.runoob.com/linux/linux-comm-
花落花相惜
2021/12/04
1.3K0
NFS服务搭建与配置
本文讲解在 CentOS 5.x、CentOS 6.x 和 CentOS 7.x 环境下,如何安装与部署 NFS 服务。
踏歌行
2020/10/15
3.7K0
NFS服务搭建与配置
CentOS 下NFS服务搭建与配置
启动NFS SERVER之前,首先要启动RPC服务(CentOS5.8下为portmap服务,CentOS6.6下为rpcbind服务,下同),否则NFS SERVER就无法向RPC服务注册了。另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会丢失,因此,此时RPC服务管理的NFS程序也需要重新启动以重新向RPC注册。要特别注意的是,一般修改NFS配置文件后,是不需要重启NFS的,直接在命令行执行 /etc/init.d/nfs reload 或 exportfs -rv 即可使修改的 /etc/exports 生效。
星哥玩云
2022/07/14
1.8K0
企业运维经典面试题汇总(4)
1、如何过滤出已知当前目录下yangwen中的所有一级目录(提示:不包含yangwen目录下面目录的子目录及隐藏目录,即只能是一级目录)? 解答: 方法1:通过find直接查找指定类型的文件 [ro
释然IT杂谈
2020/08/25
4900
练习题二下
惨绿少年
2017/12/28
8890
Linux 三剑客之awk
目录 Linux 三剑客之awk 简介 应用场景 awk执行流程图 awk生命周期 awk内置(预定义)变量 行与列描述 取行 取列 awk中的函数 条件的分类 awk正则详细: 普通正则和awk正则区别 范围表达式 逻辑表达式 算术表达式 特殊模式BEGIN{}和END{} awk数组 awk 的 判断、循环 if循环 循环 总体练习 易错点: Linux 三剑客之awk 简介 awk主要是用来格式化文本,也有人称awk是一种语言,类似 C,awk 是三剑客的老大,利剑出鞘,必会不同凡响。 应
HammerZe
2022/03/25
7120
Linux 三剑客之awk
Centos7系统巡检
这周闲得慌,就根据需求写了差不多20个脚本(部分是之前分享过的做了一些改进),今天主要分享一个给平时运维人员用的centos7系统巡检的脚本,或者排查问题检查系统情况也可以用..
jwangkun
2021/12/23
8150
Shell 编程(六):文本三剑客之 Awk
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
陈大剩博客
2023/03/06
1.3K0
Shell 编程(六):文本三剑客之 Awk
❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】
因为AT&T(通用电气)的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码。Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以小型UNIX(mini-UNIX)之意,将它称为MINIX。
全栈程序员站长
2022/09/05
2.3K0
❤️肝下25万字的《决战Linux到精通》笔记,你的Linux水平将从入门到入魔❤️【建议收藏】
Shell 编程(六):文本三剑客之 Awk
awk 是一个文本处理工具,通常用于处理数据并生成结果报告,awk的命名是它的创始人 Alfred Aho、 Peter Weinberger 和 Brian Kernighan 姓氏的首个字母组成的。
高久峰
2023/09/18
3960
Shell 编程(六):文本三剑客之 Awk
相关推荐
Linux三剑客之awk命令详解及相关实例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档