Linux awk命令和示例
时间:2019-11-20 08:53:02 来源:igfitidea点击:
如何在bash shell脚本中使用awk?
Awk是用于构建UNIX/Linux Shell脚本的出色工具。
AWK是一种编程语言,旨在处理文件或数据流中或使用Shell管道的基于文本的数据。
使用awk查看文本文件
awk '{ print }' /etc/passwd
或者 ($0表示整行内容)
awk '{ printawk -F':' '{ print }' /etc/passwd}' /etc/passwd
打印特定的字段(特定的列)
只查看第一列(字段),分隔符是冒号:
awk -F':' '{ print }' /etc/passwd | sort
只查看第一列,并进行排序:
awk ' == 300 { print== != < > = ?:}' /var/log/httpd/access.log
awk模式匹配
只查看符合条件的行:
awk ' == 300 ' /var/log/httpd/access.log awk ' == 300 {print} ' /var/log/httpd/access.log awk ' == 300 {printawk '/tom|bob|Hyman/' /etc/passwd} ' /var/log/httpd/access.log
大括号外面的 $9 == 300
称为匹配模式
大括号里面的 print $0
称为执行动作。
比较运算符报错
awk "NR==1{print;exit}" /etc/resolv.conf awk "NR==$line{print;exit}" /etc/resolv.conf
如果没有提供模式,则执行动作将应用于所有行。
如果没有指定 执行动作,则将打印整行。
如果只有print,则会打印整行。
因此,下面的命令效果是一样的:
awk '{total += } END {print total}' earnings.txt
awk匹配多个条件
匹配包含tom,或者bob或者Hyman的行
awk 'BEGIN {printf "%.3f\n", 2005.50 / 3}'
awk查看文件的第一行
Linux shell如何查看文件第1行内容:
n1=5 n2=10 echo | awk -v x=$n1 -v y=$n2 -f program.awk
使用awk进行计算
将第1列中所有数字进行求和:
BEGIN{ans=x+y} {print ans} END{}
Shell无法使用浮点数进行计算,但是awk可以:
##代码##Shell脚本中如何将Shell变量传递到Awk
可以使用-v选项将shell变量传递给awk:
##代码##在程序开始执行之前,将值n1分配给变量x。
此类变量值可以在AWK程序的BEGIN块中使用: