linux下awk的使用教程,linuxawk使用教程


linux下awk的使用教程

AWK是一种优良的文本处理工具。其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母,AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

printf '%s\n' `cat abc.txt`
printf '%s\n' $(cat abc.txt)

printf '输出类型输出格式' 输出内容

输出类型:
%s		输出字符串
%i		输出整数
%f		输出浮点数

输出格式:
\n		换行
\t		制表符

例子:
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323

说明:
%-5s 格式为左对齐且宽度为5的字符串代替(-表示左对齐),不使用则是又对齐。 
%-4.2f 格式为左对齐宽度为4,保留两位小数。

printf '%s %s %s\n' a b c d e f
printf '%5s %s %s\n' a b c d e f
printf '%-5s %s %s\n' a b c d e f

-------------------------------------------------------------------------------------------------------------
cut不够强大

df -h | cut -d ' ' -f 2
df -h | awk '{print $2}'

awk命令格式
awk 'pattern1 {action1} pattern2 {action2} ...' filename

awk默认的分隔符是空格或制表符

cat /etc/passwd | awk -F ':' '{print $0}'
awk -F ':' '{print $2}' /etc/passwd

awk -F ':' '1>5 {print $1} 2>1 {print $2}' /etc/passwd

awk 'BEGIN {print "this file is /etc/passwd"} {print $0}'

awk -F ':' 'BEGIN {print "this file is /etc/passwd"} {print $1}' /etc/passwd

awk '{FS=":"} {print $1}' /etc/passwd
awk 'BEGIN {FS=":"} {print $1}' /etc/passwd

awk 'END {print "end of file"} {print $1}' /etc/passwd

相关内容