1.通过正则表达式/^$/匹配空白行,动作为打印Blank line,即文件如果有N个空白行,AWK就在屏幕打印N个Blank line:
awk '/^$/ {print "Blank line"}' test.txt
建立脚本执行:
2.打印包含主机名的行,默认动作为打印
awk '/HOSTNAME/' /etc/sysconfig/network
3.读取输入行并输出第一个字段,第二个字段,第三个字段。
echo hello the world | awk '{print $1,$2,$3}'
4.读取输入行并输出该行。
echo hrrd def asds | awk '{print $0}'
5.读取输入行并输出该行的字段个数。
echo hrrd def asds | awk '{print NF}'
6.读取输入行并输出该行最后一个字段。
echo hrrd def asds | awk '{print $NF}'
7.默认AWK读取数据以空格或制表符作为分隔符,但可以通过-F或FS变量来改变分隔符。
awk -F: '{print $1}' /etc/passwd
awk
awk 'BEGIN {FS = ":"} {print $1}' /etc/passwd
8.指定多个字段分隔符(文档内容为:hello the:word,!)
echo 'hello the:word,!' | awk 'BEGIN {FS="[:,]"} {print $1,$2,$3,$4}'
9.输出当前文档的当前行编号,第一个文件八行,第二个文件三行;
awk '{print FNR}' test1.txt test2.txt
10.AWK将两个文档作为一个整体的输入流,通过NR输入当前行编号:
awk '{print NR}' test1.txt test2.txt
11.文档的每一行有多少字段
awk '{print NF}' test1.txt
12.读取每一行的前三个字段
awk '{print $1,$2,$3}' test1.txt
13.读取输入数据,以空白行为记录分隔符,即第一个空白行前的内容为第一个记录,第一个记录中的字段分隔符为换行符:awk实现打印所有的邮件时间,即每个记录的第三个字段。
awk 'BEGIN {FS="\n"; RS=""} {print $3}' test3.txt
$2打印每个记录第二行的字段
awk 'BEGIN {FS="\n"; RS=""} {print $2}' test3.txt
14.统计所有的空白行:
awk '/^$/ {print x+=1}' test.txt
15.打印总空白行个数:
awk '/^$/ {x+=1} END {print x}' test.txt
16.判断分区boot可用容量小于20MB时报警,否则显示OK。
判断分区boot可用容量小于20000MB时报警,否则显示OK
17.打印每一行的字符长度。
awk '{print length()}' test.txt
18.将passwd中所有的root修改为Jacob显示至屏幕
awk -F: 'gsub(/root/,"jacob",$0) {print $0}' /etc/passwd