awk 选项 ‘模式或条件{编辑命令}’ 文件1 文件2…. //过滤并输出文件中符合条件的内容
awk -f 脚本文件 文件1 文件2… //从脚本中调用的编辑指令,过滤并输出内容
awk包含几个特殊的内建变量(可直接用)如下所示:
FS:指定每行文本的字段分隔符,默认为空格或制表位;
NF:当前处理的行的字段个数;
NR:当前处理的行的行号(序数);
$0:当前处理的行的整行内容;
$n:当前处理的行的第n个字段(第n列); FILENAME:被处理的文件名;
RS:数据记录分隔,默认为 ,即每行为一条记录。
1、按行输出文本
输出所有内容,等同于cat test.txt
awk ‘{print}’ test.txt
输出所有内容,等同于cat test.txt
awk ‘{print $0}’ test.txt
输出第1~3行内容
awk ‘NR1,NR3{print}’ test.txt
输出第1~3行内容
awk ‘(NR>=1)&&(NR<=3){print}’ test.txt
输出第1行,第3行的内容
awk ‘NR1||NR3{print}’ test.txt
输出所有奇数行的内容
awk ‘(NR%2)==1{print}’ test.txt
输出所有偶数行的内容
awk ‘(NR%2)==0{print}’ test.txt
输出以root开头的行
awk ‘/^root/{print}’ /etc/passwd
输出以nologin结尾的行
awk ‘/nologin$/{print}’ /etc/passwd
统计以/bin/bash结尾的行数,等同于grep –c “/bin/bash$” /etc/passwd
awk ‘BEGIN {x=0};//bin/bash$/{x++};END {print x}’ /etc/passwd
5.1.11统计以空行分隔的文本段落数
awk ‘BEGIN {RS=””} ;END{print NR}’ test.txt
2、按字段输出文本
输出每行中(以空格或制表符分隔)的第三个字段
awk ‘{print $3}’ test.txt
输出每行中第1,3个字段
awk ‘{print $1,$3}’ test.txt
输出密码为空的用户的shadow记录
awk -F ”:” ‘$2==””{print}’ /etc/shadow
输出密码为空的用户的shadow记录
awk ‘BEGIN {FS=”:”} ; $2==””{print}’ /etc/shadow
输出以冒号分隔且第7个字段中包含/bash的行的第一个字段
awk -F ”:” ‘$7~”/bash”{print $1}’ /etc/shadow
输出包含8个字段且第一个字段中包含nfs的行的第1,2个字段
awk ‘($1~”nfs”)&&(NF==8){print $1,$2}’ /etc/services
输出第七个字段既不为/bin/bash也不为/sbin/nologin的所有行
awk -F “:” ‘($7 != “/bin/bash”)&&($7 != “/sbin/nologin”){print}’
/etc/passwd
3、通过管道、双引号调用Shell命令
调用wc –l命令统计使用bash的用户的个数,等同于grep –c “bash$ ”
/etc/passwd
awk -F: ‘/bash $/{print | “wc -l”}’ /etc/passwd
调用w命令,并用来统计在线用户数
awk ‘BEGIN {while (“w” | getline) n++ ; {print n-2}}’
调用hostname,并输出当前主机名
awk ‘BEGIN {“hostname” | getline ; print $0}’
sort是一种以行为单位对文件内容进行排序的工具,也可以根据不同的数据类型来排序
用法:sort命令的语法为“sort [选项] 参数”,
其中常用的选项包括一下几种
将/etc/passwd 文件中的账号进行排序,默认是按首字母顺序排序
第三列是数字,倒序排列
uniq工具在Linux系统中通常与sort命令结合使用,用于报告或者忽略文件中的重复行
-c:进行计数;
-d:仅显示重复行;
-u:仅显示出现一次的行
tr命令常用来对来自标准输入的字符进行替换、压缩和删除
tr具体的命令语法格式为:tr [选项] [参数]
-c:取代所有不属于第一字符集的字符;
-d:删除所有属于第一字符集的字符;
-s:把连续重复的字符以单独一个字符表示;
-t:先删除第一字符集较第二字符集多出的字符,做替换
1.将大写字母转换成小写字母
2.压缩输入中重复的字符
3.删除字符串中的某些字符