awk java_Linux三剑客之awk

前言

awk是linux实际工作中最重要强大的工具,而且还是一门编程语言,可以用来处理数据和生成报告(Excel),处理的数据可以是一个或多个文件。

一>显示出某个范围内的内容

测试文件及内容如下:

[root@192 data]# cat testAwk.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

1>  显示文件中的第五行[root@192 data]# awk 'NR==5' testAwk.txt

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

说明:NR在awk中表示行号(记录号),NR==5表示行号等于5的行。awk后面所接的内容要用单引号。

2>显示文件中第二行到第六行的内容[root@192 data]# awk 'NR==2,NR==6' testAwk.txt

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

3>显示文件中第二行到第六行的内容,并打印行号[root@192 data]# awk 'NR==2,NR==6 {print NR,$0}' testAwk.txt

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

说明:print关键字表示显示的内容,相当于是awk内部的一个命令。NR还是表示行号,$0表示一整行的内容。

4>显示文件中的第一列,第三列和最后一列[root@192 data]# awk -F ":" '{print $1,$3,$NF}' testAwk.txt

root 0 /bin/bash

bin 1 /sbin/nologin

daemon 2 /sbin/nologin

adm 3 /sbin/nologin

lp 4 /sbin/nologin

sync 5 /bin/sync

shutdown 6 /sbin/shutdown

halt 7 /sbin/halt

mail 8 /sbin/nologin

operator 11 /sbin/nologin

games 12 /sbin/nologin

ftp 14 /sbin/nologin

nobody 99 /sbin/nologin

说明: A.这里我们使用了awk的-F参数,-F参数表示指定一把“菜刀分隔符”来切割每一行的内容,-F后面可用单引号双引号或不加引号,建议最好使用双引号。

B.使用"$(美元符号)"后面接数字,$1表示第一个部分(第一列),$2(第二列),$3(第三列),依次类推,但是$0表示整行。$NF表示最后一列。

5>把文件中的/sbin/nologin替换为/bin/bash(awk函数功能实践)

[root@192 data]# awk '{gsub("/sbin/nologin","/bin/bash",$0);print $0}' testAwk.txtroot:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/bash

daemon:x:2:2:daemon:/sbin:/bin/bash

adm:x:3:4:adm:/var/adm:/bin/bash

lp:x:4:7:lp:/var/spool/lpd:/bin/bash

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:/bin/bash

operator:x:11:0:operator:/root:/bin/bash

games:x:12:100:games:/usr/games:/bin/bash

ftp:x:14:50:FTP User:/var/ftp:/bin/bash

nobody:x:99:99:Nobody:/:/bin/bash

注意:A.gsub与后面的括号之间不能有空格.

B.替换对象,替换成什么内容以及哪一列之间要用逗号分隔开.

C.替换对象的外面要用双引号或者双斜线包裹起来,即"替换对象"

D.替换成什么内容就只能用双引号包裹起来了,即“替换成什么内容”

E.最后一个是哪一列。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值