正则三剑客AWK

分隔第2行内容的第一段

head -n2 test.txt|awk -F ':' '{print $1}'

 

第2行内容的所有段($0 表示所有字段)

head -n2 test.txt|awk -F ':' '{print $0}'

 

匹配字段添加分隔符

awk -F ':' '{print $1"#"$2"#"$3"#"$4}'

 

匹配字符串为root的行

awk '/oo/' test.txt

 

匹配第一字段包含oo的行

awk -F ':' '$1 ~/oo/' test.txt

 

匹配完root,再匹配test

awk -F ':' '/root/ {print $1,$3} /test/ {print $1,$3}' test.txt

 

找出$3这个字段的字符等于0的行

awk -F ':' '$3=="0"' /etc/passwd

 

awk -F ':' '$3>="500"' /etc/passwd

 

找出$3这个字段的字符大于等于500的行

awk -F ':' '$3>=500' /etc/passwd

 

匹配$7字段 不等于字符串·/bin/nologin

awk -F ':' '$7!="/sbin/nologin"' /etc/passwd

 

 

awk -F ':' '$3<$4' /etc/passwd

awk -F ':' '$3>"5" && $3<"7"' /etc/passwd

awk -F ':' '$3>1000 || $7=="/bin/bash"' /etc/passwd

 

匹配字段添加分隔符#

head -5 /etc/passwd |awk -F ':' '{OFS="#"} {print $1,$3,$4}'

awk -F ':' '{OFS="#"} {if ($3>1000) {print $1,$2,$3,$4}}' /etc/passwd

 

 

NR记录当前已读入行的数量,只打印行号

$NR 表示,根据当前行号打印相应字段(比如:第1行,打印 $1字段;第2行,打印$2字段)

NF记录当前处理行的字段个数(列数)

 

head -n3 /etc/passwd | awk -F ':' '{print NF}'

head -n3 /etc/passwd | awk -F ':' '{print NR}'

awk 'NR>40' /etc/passwd

awk -F ':' 'NR<20 && $1 ~ /roo/' /etc/passwd

head -n 3 /etc/passwd |awk -F ':' '$1="root"'

循环语句

awk -F ':' '{(tot=tot+$3)}; END {print tot}' /etc/passwd

判断语句

awk -F ':' '{if ($1=="root") {print $0}}' /etc/passwd

posted @ 2021-04-28 18:34  必安  阅读(72)  评论(0)    收藏  举报