awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。
awk应用
awk打印指定内容
awk ‘{print $n}’ [filename] 在此n代表数字(当n=0时$0代表文件所有内容,当n=1,2,3...时$1,2,3...代表相应列)
awk -F 指定分隔符(默认以空格为分隔符)
说明: 指定分隔符后该命令只识别指定的分隔符,如果某行无指定的分隔符则会打印其整行!
awk的匹配功能(匹配用“~”)
针对数学表达式的用法
数值比较
说明: 当“1000”加引号时会被当做是字符串,以ASC码(二进制)的方式进行计算处理,不加引号的时候会被当做是数值处理。
说明: 当使用一个“=”等号时表示为等号前面字符赋值,使用两个“==”表示逻辑关系(进行判断)。
字符比较大小
说明: “&&”表示并且。
说明: “||”表示或者。
OFS指定打印时的分隔符
先写OFS指定后print
NR (=number row)表示行号
注: 类似于grep -n。
NF (=number fragment)表示段数(列)
求和
tot=tot+$3===第三段总和=n(第3段)+n+1(第3段)