Open diffnest opened 6 years ago
最近一直在处理一些文本数据,复习了一些awk相关知识,顺便记录一下!
awk -F: '{print $2}' /etc/passwd awk 'BEGIN {FS = ":"} {print $1}' /etc/passwd echo 'hello the:word,!' | awk 'BEGIN {FS="[:, ]"} {print $1,$2,$3,$4}'//多字段分割 awk -F: '{print NR,NF,$NF,"\t",$0}' /etc/passwd //依次打印行号,字段数,最后字段值,制表符,每行内容 awk -F: 'NR==5 || NR==6{print}' /etc/passwd //显示第5行和第6行
必须用在{}中,且比较内容用()扩起来 awk -F: '{if($1~/mail/) print $1}' /etc/passwd //简写 awk -F: '{if($1~/mail/) {print $1}}' /etc/passwd //全写 awk -F: '{if($1~/mail/) {print $1} else {print $2}}' /etc/passwd //if...else...
awk '{ if ($2 >= 90 && $2 <= 100) {print $1,"A"} else if ($2 >= 80 && $2 < 90) {print $1,"B"} else if ($2 >= 70 && $2 < 80) {print $1,"C"} else if ($2 >= 60 && $2 < 70) {print $1,"D"} else {print $1,"E"} }' cj awk '{if (1513148221-$4 < 86400 * 30) $4=30; else if (1513148221-$4 >= 86400 * 30 && 1513148221-$4 <= 86400 * 60) $4=60 ; else if (1513148221-$4 >= 86400 * 60 && 1513148221-$4 <= 86400 * 90) $4=90;else if (1513148221-$4 > 86400 * 90 )$4=91;print}' jf.src > /tmp/wdk
ARGC 命令行参数个数 FILENAME 当前输入文档的名称 FNR 当前输入文档的当前记录编号,尤其当有多个输入文档时有用 NR 输入流的当前记录编号 NF 当前记录的字段个数 FS 字段分隔符 OFS 输出字段分隔符,默认为空格 ORS 输出记录分隔符,默认为换行符\n RS 输入记录分隔符,默认为换行符\n
echo "test" | awk 'x=2 {print x+3}' echo "test" | awk 'x=2,y=3 {print x*2, y*3}' awk -F: '$3>500 {print $1}' /etc/passwd
1.字段分割符
2.IF语句
3.IF ELSE语句
4.内置变量
5.简单操作运算符