awk

简介:

-F 指定分割符 ofs 是打印结果 print 指打印 
[root@abinlinux ~]# awk -F ':' '$1=="nobody" {print $1}' 1.txt
nobody
[root@abinlinux ~]# awk -F ':' '$1=="nobody"' 1.txt 匹配一整行
nobody:x:99:99:Nobody:/:/sbin/nologin
[root@abinlinux ~]# awk -F ':' '$1=="nobady" || $7~/nolog/' 1.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
mail:x:8:12:mail:/var/spoorrrrrrrrol/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@abinlinux ~]# awk -F ':' '$3>=500' 1.txt 判断大于等于500
yun:x:500:500::/home/yun:/bin/bash

[root@abinlinux ~]# awk -F ':' '"$3>=500"' 1.txt 
加上双引号 不再按照数字排序 按阿斯玛排序 
rooooooooot: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
[root@abinlinux ~]# awk -F ':' '$3>=500' 1.txt 要跟数字比的话要把双引号去掉 
[root@abinlinux ~]# awk -F ':' '$7!~/nolog/' 1.txt 不匹配nolog 
rooooooooot:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/rrr_orbin:/bin/sync
[root@abinlinux ~]# awk -F ':' '$3<$4' 1.txt $3<$4的行 
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/spoorrrrrrrrol/mail:/sbin/nologin
[root@abinlinux ~]# awk -F ':' '$3==$4' 1.txt $3=$4 的匹配 不能写一个等于号 一个是赋值
rooooooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@abinlinux ~]# awk -F ':' 'OFS=":" ;$3=$4' 1.txt 
[root@abinlinux ~]# awk -F ':' 'OFS=":" ;$3=$4' 1.txt $3=$4 3的值匹配给4 ofs以冒号分开
rooooooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

[root@abinlinux ~]# awk -F ':' 'NR<10' 1.txt 小于10的行显示出来 
NR 行 
rooooooooot: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@abinlinux ~]# awk -F ':' 'NR>10' 1.txt 大于10 的行显示出来 
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/goproher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@abinlinux ~]# awk -F ':' 'NR==10' 1.txt 等于 10 的行 
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
[root@abinlinux ~]# awk -F ':' 'NR==10 {print $1,$7}' 1.txt 只打印指定的段 
uucp /sbin/nologin
[root@abinlinux ~]# awk -F ':' '{if(NR==10) print $1,$7}' 1.txt if的用法 
uucp /sbin/nologin
[root@abinlinux ~]# awk -F ':' 'OFS=":" {if(NR==10) print $1,$7}' 1.txt 以:分割符用法 
uucp:/sbin/nologin
[root@abinlinux ~]# awk -F ':' '{print NF}' 1.txt 直接打印没一行有几段 
7
7
7
7
7
[root@abinlinux ~]# awk -F ':' '{if (NF==7) print $1}' 1.txt 判断每行是不是七段 并打印$1
rooooooooot
bin
daemon
adm
[root@abinlinux ~]# awk -F ':' 'OFS=":" ;$7=$3+$4' 1.txt 
bin:x:1:1:bin:/bin:2
daemon:x:2:2:daemon:/sbin:4
[root@abinlinux ~]# awk -F ':' 'OFS=":" {$7=$3+$4; print $0}' 1.txt $0是正行 
rooooooooot:x:0:0:root:/root:0
bin:x:1:1:bin:/bin:2
daemon:x:2:2:daemon:/sbin:4
adm:x:3:4:adm:/var/adm:7
lp:x:4:7:lp:/var/spool/lpd:11
[root@abinlinux ~]# awk -F ':' 'OFS=":" {$7=$3+$4; print $1,$3}' 1.txt
rooooooooot:0
bin:1
daemon:2
adm:3


本文转自 amenging 51CTO博客,原文链接:http://blog.51cto.com/11335852/2043426


相关文章
|
Web App开发 机器学习/深度学习 Linux
AWK常用技巧
1.1 介绍 awk其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母。实际上 AWK 的确拥有自己的语言: AWK 程序设计语言 , 三位创建者已将它正式定义为“样式扫描和处理语言”。
1441 0
|
网络协议 关系型数据库 MySQL
|
网络协议 关系型数据库 Shell
|
Perl Shell SDN
|
关系型数据库 MySQL Unix
|
Shell Perl Ubuntu
|
存储 Shell C语言