学习自:http://www.zsythink.net/archives/tag/awk/page/2/
输入分隔符-F
或-v指定输入分隔符
awk -F# '{print $1, $2}' test.txt
或者awk -v FS='#' '{print $1, $2}' test.txt
-v指定输出分隔符
awk -v OFS='+++' '{print $1, $2}' test.txt
同时指定
awk -v FS= '&' -v OFS='+++' '{print $1, $2}' test.txt
NR表示每一行的行号,NF表示每一行有几列
awk '{print NR, NF}' test.txt
行号加整行内容
awk '{print NR, $0}' test.txt
模式匹配
打印列数为5的行
awk 'NF=5 {print $0}' test.txt
打印第二列为4的行
ll | awk '$2==4 {print}'
指定行
awk -v line=1 '{print $0}' test.txt
正则表达式
打印文件中所有以zsy开头的行
awk '/^zsy/{print $0}' test.txt
匹配的字符串中字母e最少连续出现两次,最多连续出现4次的行
awk --posix '/he{2,4}y/{print $0}' test.txt
或 awk --re-interval '/he{2,4}y/{print $0}' test.txt
动作
awk '{print $1; print $2}' test.txt
条件判断语句(里面的大括号可以省略)
awk '{if(NR ==1 ){print NR,"系统"} else{print NR, "普通"}}' test.txt
awk '{if(NR ==1 ) print $0 }' test.txt
kubectl get po --all-namespaces |grep $service |awk '/$service/{print $2}'
kubectl get po --all-namespaces |awk '/$service/{print $2}'
选择以若干个空格开头,并紧跟着Image的行
awk '/^[[:space:]]+Image/{print $0}'
网友评论