筛选/proc/meminfo中第一列中以大写字母A开头e结尾的行
awk -F: '$1~/^A.*e$/{print $0}' /proc/meminfo
筛选/etc/passwd中以bash结尾的行
awk '/(bash)$/{print $0}' /etc/passwd
筛选/etc/init.d/function中带有()的行
cat -n /etc/init.d/functions | awk '/\(.*\)/{print $0}'
注意需要对()进行转义
输出pwd下的当前目录名
pwd | awk -F/ '{print NF}'
输出/etc/passwd下每种shell的数量
cat /etc/passwd | awk -F/ '{print $NF}' | sort | uniq -c
输出ip a中ens33的ipv4地址
ip a | awk 'BEGIN{j=0}{for(i=1;i<NF;i++){if($i~'/ens33/'){j=1}if($i~'/^inet$/'&&j==1){print $(i+1)}}}' | awk -F/ '{print $1}'
首先for循环把除空格外的所有字符串取出,然后定义j,当循环遍历到ens33后就将j=1,当j=1并且匹配到inet字符串后便输出下一个字符串,然后去除该字符串的端口号即可
筛选一个文件中带有空格的行
awk '{if(NF>1){print $0}}' test.txt
查看/etc/目录下共有多少个root字段
ll /etc/ | awk 'BEGIN{i=0}{for(j=1;j<NF;j++){if($j=="root"){i++}}}END{print i}'