正则三剑客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

浙公网安备 33010602011771号