-F 指定分割符号
print 外层的引号必须是单引号 $n不能被解析
[root@bogon ~]# cat 1.txt a:b:c:da1:b1:c1:d1a2:b2:c2:d2a_: :c:dddd[root@bogon ~]# awk -F ':' '{print $1}' 1.txt aa1a2a_[root@bogon ~]# awk -F ':' '{print $2}' 1.txt bb1b2[root@bogon ~]# awk -F ':' '{print $1,$4}' 1.txt a da1 d1a2 d2a_ dddd
匹配第三列含有数字的
awk -F ':' '$3~/[0-9]/' 1.txt
$0 表示整行
~ 模糊匹配== 精准匹配匹配第三列含有数字只显示第一列和第三列awk -F ':' '$3~/[0-9]/ {print $1,$3}' 1.txt
重新指定分割符 OFS要放在前面 打印出的不能是$0
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的结果[root@bogon ~]# awk -F ':' '$3~/[0-9]/' 1.txt a1:b1:c1:d1a2:b2:c2:d2[root@bogon ~]# awk -F ':' '$3~/[0-9]/ {print $1,$3}' 1.txt a1 c1a2 c2[root@bogon ~]# awk -F ':' '$3~/[0-9]/ {OFS="#";print $1,$3}' 1.txt a1#c1a2#c2
精准匹配
字符必须加引号awk -F ':' '$1=="a2" {print $0}' 1.txt
[root@bogon ~]# awk -F ':' '$1=="a2" {print $0}' 1.txta2:b2:c2:d2[root@bogon ~]# awk -F ':' '$1=="a2"||NR>3 {print $0}' 1.txta2:b2:c2:d2a_: :c:dddd表达式 [root@bogon ~]# awk -F ':' '$1=$2$3 {print $0}' 1.txt bc b c db1c1 b1 c1 d1b2c2 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:da1:b1:c1:d1e:fe1:f1:g1e2:f2:g2:h2:i:j:k[root@bogon ~]# awk -F ':' 'NF>=3&&NF<=5 {print}' 1.txt a:b:c:da1:b1:c1:d1e1:f1:g1
awk -F ':' '{OFS="#";print $NR,$NF}' 1.txt
[root@bogon ~]# cat 1.txt a:b:c:da1:b1:c1:d1e:fe1:f1:g1e2:f2:g2:h2:i:j:k[root@bogon ~]# awk -F ':' '{OFS="#";print $NR,$NF}' 1.txta#db1#d1#f#g1i#k
对于以上 $NR,$NF的解析
1,42,43,24,35,7