awk使用

作者: 强出头 | 来源:发表于2018-03-02 17:58 被阅读0次

awk上

awk上

分段查询,指定分隔符

(打印第一段)
[root@localhost ~]# awk -F ':' '{print $1}' passwd1 |head -4
root
bin
daemon
adm
[root@localhost ~]# head -4 passwd1 
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
(打印所有段)
[root@localhost ~]# awk '{print $0}' passwd1 |head -4
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

分段查询不使用分隔符,则默认以空格或空白字符分割
打印多段可以以 ,或者其它指定符号分割

[root@localhost ~]# awk -F ':' '{print $1"#"$2"#"$3}' passwd1 |head -4
root#x#0
bin#x#1
daemon#x#2
adm#x#3

指定查询包含 oo 的行

[root@localhost ~]# awk '/oo/' passwd1 
root:x:0:0:root:/root:/bin/bash
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin

第一段包含

[root@localhost ~]# awk -F ':' '$1 ~ /oo/' passwd1 
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# awk -F ':' '$1 ~ /oo+/' passwd1 
root:x:0:0:root:/root:/bin/bash

匹配并打印指定段

[root@localhost ~]# awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' passwd1 
root 0
operator 11

判断符号匹配

[root@localhost ~]# awk -F ':' '$3=="0"' passwd1 
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# awk -F ':' '$3>="500"' passwd1 
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
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
(比较的是ASCII值比较的)
[root@localhost ~]# awk -F ':' '$3>=500' passwd1 
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash
[root@localhost ~]# awk -F ':' '$7!="/sbin/nologin"' passwd1 
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
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash

awk下

awk下

判断符号匹配

[root@localhost ~]# awk -F ':' '$3<$4' passwd1 
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
[root@localhost ~]# awk -F ':' '$3>"5" && $3<"7"' passwd1 
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
[root@localhost ~]# awk -F ':' '$3>1000 || $7=="/bin/bash"' passwd1 
root:x:0:0:root:/root:/bin/bash
wsl:x:1000:1000::/home/wsl:/bin/bash
wsl1:x:1001:1001::/home/wsl1:/bin/bash

指定打印的后的分隔符

[root@localhost ~]# head -4 passwd1 |awk -F ':' '{OFS="#"}{print $1,$3,$4}'
root#0#0
bin#1#1
daemon#2#2
adm#3#4

增加判断语句

[root@localhost ~]# awk -F ':' '{OFS="#"}{if($3>1000){print $1,$3,$4}}' passwd1 
wsl1#1001#1001

显示行号

[root@localhost ~]# awk -F ':' '{print NR":"$0}' passwd1 |head -5
1:root:x:0:0:root:/root:/bin/bash
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

显示每行段数

[root@localhost ~]# awk -F ':' '{print NF":"$0}' passwd1 |head -5
7:root:x:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

行数小于10作为判断

[root@localhost ~]# awk -F ':' 'NR<=10' passwd1 
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
[root@localhost ~]# awk -F ':' 'NR<=10 && $1 ~ /root|syrnc/' passwd1 
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# awk -F ':' 'NF<=10 && $1 ~ /root|syrnc/' passwd1 
root:x:0:0:root:/root:/bin/bash

NR和NF做参数

[root@localhost ~]# awk -F ':' '{print $NR":"$NF}' passwd1 |head -4
root:/bin/bash
x:/sbin/nologin
2:/sbin/nologin
4:/sbin/nologin

赋值

[root@localhost ~]# awk -F ':' '{OFS=":"}  $1="root"' passwd1 |head -4
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:x:3:4:adm:/var/adm:/sbin/nologin

计算第三段的和

[root@localhost ~]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' passwd1 
4606

相关文章

  • shell首字母转换为大写

    使用tr 使用awk

  • 过滤sam文件,留下唯一比对reads

    使用awk

  • awk 命令使用方法

    1. awk 擅长功能 awk 擅长对列进行操作/进行数据信息的统计(数组) awk 基本使用(高级使用-shel...

  • awk gsub使用

    参考文章 awk当中使用外部变量 gsub当中使用外部变量 1.awk命令使用双引号的情况下 此时在awk命令里面...

  • 关于awk(简单用法)

    关于awk 使用方法awk'{pattern + action}'{filenames} pattern 表示 A...

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

  • awk巩固扩展

    awk 中使用外部shell变量 选项-v可以实现使用外部变量。 如:A=44echo "ABCD" | awk ...

  • awk & sed

    awk 常见使用教程 awk 使用的时候有两个要求就是脚本必须放到{}中,由于awk命令假定脚本是单个文本字符串,...

  • Linux命令之awk

    awk中使用shell命令awk '{cmd="rm "$0;system(cmd)}' filename.txt...

  • linux 命令 awk

    awk使用 sed -n '/queryAll2/p' 2017-02-20.log | awk -F ',' '...

网友评论

      本文标题:awk使用

      本文链接:https://www.haomeiwen.com/subject/alngxftx.html