awk用法(一)
awk跟以前的sed命令,grep命令比较,它的优势在于它能够实现更多的功能。
比如awk可以实现分段,sed,grep是没法实现的
可以根据一个分隔符,将其分为一小段一小段,通过段来匹配。
-
知识点一:
awk -F ':' '{print $3,$4}' 1.txt 显示指定段的匹配== awk -F: '{print $3,$4}' 1.txt
-F ':'指定冒号分隔符,$3指定第三段
$3,$4中间的逗号,实际显示的是空格分割。【比较下面截图可看出】
-
知识点二:
awk -F ':' 'OFS=":" {print $3,$4}' 1.txt
-
知识点三:
awk '/root/' 1.txt 类似grep,sed的匹配功能
-
知识点四:
awk '/user|root/' 1.txt 匹配user或者匹配root,它和sed -r、grep -E,egrep效果一样。下面比较下它们几个用法区别,截图如下:
awk '/r.*o/' 1.txt
awk '/r?o/' 1.txt
awk '/r+o/' 1.txt
awk '/(00)+/' 1.txt
-
知识点五:【面试时可能会问到!注意下!】
awk '/(00){2}/' 1.txt {}表示范围,出现了几次的oo匹配,这里注意,awk命令不支持{}次数写法!这里要与sed命令和grep命令区分,grep和sed都支持!!
#grep -E --color '(oo){2,10}' 2.txt
两次或者10次的oo,最小的显示起!截图如下:
-
知识点六:
awk -F ':' '$1~/r*o/' 1.txt
可以指定第一段中,包含r*o的都匹配显示出来。参考截图如下:
-
知识点七:
awk -F ':' '$1~/r*o/ {print $3}' 1.txt
可以指定第一段,包含r*o中匹配中的,精准打印其第三段!【参考知识点六】