awk經常使用基本使用ide
-F 指定分割符號it
print 外層的引號必須是單引號 $n不能被解析class
[root@bogon ~]# cat 1.txt a:b:c:d a1:b1:c1:d1 a2:b2:c2:d2 a_: :c:dddd [root@bogon ~]# awk -F ':' '{print $1}' 1.txt a a1 a2 a_ [root@bogon ~]# awk -F ':' '{print $2}' 1.txt b b1 b2 [root@bogon ~]# awk -F ':' '{print $1,$4}' 1.txt a d a1 d1 a2 d2 a_ dddd
匹配第三列含有數字的awk
awk -F ':' '$3~/[0-9]/' 1.txt
$0 表示整行
~ 模糊匹配
== 精準匹配
匹配第三列含有數字只顯示第一列和第三列di
awk -F ':' '$3~/[0-9]/ {print $1,$3}' 1.txt
從新指定分割符 OFS要放在前面 打印出的不能是$0view
awk -F ':' '$3~/[0-9]/ {OFS="#";print $1,$3}' 1.txt awk -F ':' '$1=="a2"||NR>3 {print $0}' 1.txt
NR 行號
NF 被分割後的列數
||或者 ,&& 且
第一段等於a2或者 行號>3的結果vi
[root@bogon ~]# awk -F ':' '$3~/[0-9]/' 1.txt a1:b1:c1:d1 a2:b2:c2:d2 [root@bogon ~]# awk -F ':' '$3~/[0-9]/ {print $1,$3}' 1.txt a1 c1 a2 c2 [root@bogon ~]# awk -F ':' '$3~/[0-9]/ {OFS="#";print $1,$3}' 1.txt a1#c1 a2#c2
精準匹配
字符必須加引號co
awk -F ':' '$1=="a2" {print $0}' 1.txt
[root@bogon ~]# awk -F ':' '$1=="a2" {print $0}' 1.txt a2:b2:c2:d2 [root@bogon ~]# awk -F ':' '$1=="a2"||NR>3 {print $0}' 1.txt a2:b2:c2:d2 a_: :c:dddd 表達式 [root@bogon ~]# awk -F ':' '$1=$2$3 {print $0}' 1.txt bc b c d b1c1 b1 c1 d1 b2c2 b2 c2 d2 c c dddd
查找分割後 列數 是3到5個的字符
awk -F ':' 'NF>=3&&NF<=5 {print}' 1.txt
[root@bogon ~]# cat 1.txt a:b:c:d a1:b1:c1:d1 e:f e1:f1:g1 e2:f2:g2:h2:i:j:k [root@bogon ~]# awk -F ':' 'NF>=3&&NF<=5 {print}' 1.txt a:b:c:d a1:b1:c1:d1 e1:f1:g1
awk -F ':' '{OFS="#";print $NR,$NF}' 1.txt
[root@bogon ~]# cat 1.txt a:b:c:d a1:b1:c1:d1 e:f e1:f1:g1 e2:f2:g2:h2:i:j:k [root@bogon ~]# awk -F ':' '{OFS="#";print $NR,$NF}' 1.txt a#d b1#d1 #f #g1 i#k
對於以上 $NR,$NF的解析
1,4
2,4
3,2
4,3
5,7editor