awk文本与数据处理
输出:
printf格式化输出,自动换行,和\n一起用。
print打印内容,会自动换行。
参数:-F 指定分隔符 ,不指定是空格。
awk -F ‘:’ ‘{print $1}’ /etc/passwd
awk -F ‘:’ ‘{print $1,$2}’ /etc/passwd 打印的两列有空格或者 cat /etc/passwd | awk -F ‘:’ ‘{print $1,$3}’
awk -F ‘:’ ‘{print $1"\t" $2}’ /etc/passwd
df -h |grep ‘sda1’ | awk ‘{print “sda1的使用率:”$5}’
awk的内置函数
$0:表示整个当前行
$1:表示每行第一个字段
$n表示每行第n个字段
NR每行的行号
NF字段数量(列数),如果是NF就表示最后一列
cat /etc/passwd | awk -F ‘:’ ‘{print NR,NF,$NF}’/etc/passwd
逻辑判断表达式:
,!:匹配正则表达式
==,!=,<,>:判断逻辑表达式
awk -F ‘:’ ‘NR>=1 && NR<=3{print $1}’ /etc/passwd
awk -F ‘:’ ‘NR>=1 && NR<=3{print $1,$3}’ /etc/passwd
打印以s开头的:
awk -F ‘:’ ’ $1~/^s.*/{print $1}’ /etc/passwd
打印不以s开头的:
awk -F ‘:’ ’ $1!~/^s.*/{print $1}’ /etc/passwd
root
打印第三列大于900的行号,第一列,第三列
awk -F ‘:’ ‘$3>900 {print NR,$1,$3}’ /etc/passwd
或awk -F ‘:’ ‘{if($3>900)print NR,$1,$3}’ /etc/passwd
awk ‘BEGIN{FS=“:”} {print $1,$3}’ /etc/passwd | head -n3