博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
awk
阅读量:5951 次
发布时间:2019-06-19

本文共 3262 字,大约阅读时间需要 10 分钟。

hot3.png

• head -n2 test.txt|awk -F ':' '{print $1}'

打印test.txt前两行的第一段;

说明:-F后面跟分割符;$1表示第一段;{}花括号括起来print的范围;

 

• head -n2 test.txt|awk -F ':' '{print $0}'

说明:$0 打印所有段;

 

• awk -F ':' '{print $1"#"$2"#"$3"#"$4}'

以:为分割符打印出第一段,第二段,第三段,第四段,显示的以#作为分割符

说明:

 

• awk '/oo/' test.txt

匹配字符或字符串;匹配包含oo的行;

 

• awk -F ':' '$1 ~/oo/' test.txt

针对某个段匹配;匹配第一段包含oo的行;

 

• awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt

awk -F ':' '/root/ {print $1,$3} ; /test/ {print $1,$3}' test.txt

多次匹配;包含root的打印第一段和第三段,包含test的打印第一段和第三段;

 

条件操作符:

== 等于

> 大于

< 小于

!= 不等于

>= 大于等于

<= 小于等于

说明:当比较数字时,不能加引号,加引号后就不是按数字大小来比了,而是按ASCII码比对。

 

• awk -F ':' '$3==0' /etc/passwd

# root:x:0:0:root:/root:/bin/bash

第三段为 0的行

 

• awk -F ':' '$3>=500' /etc/passwd

#polkitd:x:999:998:User for polkitd:/:/sbin/nologin

#gavin:x:1000:1000::/home/gavin:/bin/bash

#zhang:x:1001:1001::/home/zhang:/bin/bash

#user:x:1002:1002::/home/user:/bin/bash

第三段大于等于500的行

 

 

• awk -F ':' '$7!="/sbin/nologin"' /etc/passwd

root:x:0:0:root:/root:/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

gavin:x:1000:1000::/home/gavin:/bin/bash

zhang:x:1001:1001::/home/zhang:/bin/bash

user:x:1002:1002::/home/user:/bin/bash

第7段不是/sbin/nologin 的行;

 

• awk -F ':' '$3<$4' /etc/passwd

adm:x:3:4:adm:/var/adm:/sbin/nologin

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

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

games:x:12:100:games:/usr/games:/sbin/nologin

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

匹配$3小于$4的行;

 

• awk -F ':' '$3>"5" && $3<"7"' /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

数字加引号后匹配规则按ASCII码来比对

[root ~]# awk -F':' '$3>5 && $3<7' /etc/passwd

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

不加引号按数字比对;

 

• awk -F ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd

root:x:0:0:root:/root:/bin/bash

gavin:x:1000:1000::/home/gavin:/bin/bash

zhang:x:1001:1001::/home/zhang:/bin/bash

user:x:1002:1002::/home/user:/bin/bash

匹配第三段大于1000或者第7段为/bin/bash的行;

 

• head -5 /etc/passwd |awk -F ':' '{OFS="#"} {print $1,$3,$4}'

root#0#0

bin#1#1

daemon#2#2

adm#3#4

lp#4#7

OFS指定打印段之间的分隔符;

 

• awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' /etc/passwd

zhang#1001#/bin/bash

user#1002#/bin/bash

第三段大于1000则打印前四段,并用#做分割符;

[root ~]# awk -F':' '{OFS="#"} $3>1000 {print $1,$2,$3,$4}' /etc/passwd

zhang#x#1001#1001

user#x#1002#1002

 

• head -n3 /etc/passwd | awk -F ':' '{print NF}'

7

7

7

NF表示有几段;$NF表示最后一段,如果NF是7就是$7;

[root ~]# head -n3 /etc/passwd | awk -F ':' '{print $NF}'

/bin/bash

/sbin/nologin

/sbin/nologin

 

• head -n3 /etc/passwd | awk -F ':' '{print NR}'

1

2

3

NR:表示行号;$NR表示是第几行就打印第几段;

[root ~]# head -n3 /etc/passwd | awk -F ':' '{print $NR}'

root

x

2

• awk 'NR>40' /etc/passwd

打印行号大于40的行

 

• awk -F ':' 'NR<20 && $1 ~ /roo/' /etc/passwd

root:x:0:0:root:/root:/bin/bash

匹配小于行号小于20并且包含roo的行;

 

• head -n 3 /etc/passwd |awk -F ':' '$1="root"'

root x 0 0 root /root /bin/bash

root x 1 1 bin /bin /sbin/nologin

root x 2 2 daemon /sbin /sbin/nologin

把第一段改成root;

 

 

• awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd

4647

计算第三段的总和;

 

• awk -F ':' '{if ($1=="root") {print $0}}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

打印第一段等于root的行;

转载于:https://my.oschina.net/u/3803404/blog/1802025

你可能感兴趣的文章
ubuntu apache fastcgi 虚拟主机安装
查看>>
apache配置directoryindex
查看>>
Linux Bash命令关于程序调试详解
查看>>
趣文:舌尖上的程序猿
查看>>
[LeetCode] 3Sum
查看>>
Mina工具类v1.5
查看>>
Golang在Linux环境下的POSIX风格socket编程
查看>>
白话经典算法系列之中的一个 冒泡排序的三种实现
查看>>
Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
查看>>
详细解读Android中的搜索框(二)—— Search Dialog
查看>>
经常使用的webservice接口
查看>>
SAP ABAP第一,两,三代出口型BADI实现 解释的概念
查看>>
mybatis完美的实战教程
查看>>
What is the difference between DAO and DAL?
查看>>
java抓取动态生成的网页
查看>>
从零开始山寨Caffe·叁:全局线程管理器
查看>>
Ubuntu 修复windows启动项
查看>>
LCA在线算法ST算法
查看>>
PowerShell 导出SharePoint管理中心解决方式
查看>>
java操作mongodb(连接池)(转)
查看>>