刚刚进入工作一个多月了,发现工作环境需要大量使用linux命令,趁着国庆假期补补课。
参考: https://awk.readthedocs.io/en/latest/chapter-one.html
1.awk程序结构
pattern{action}
awk的基本操作是一行一行扫描输入,搜索匹配模式的行,执行动作后进行下一行的读取。
1) A 数学 80
2) B 语文 90
3) C 英语 87
对于上述的表数据,
$4 == 90 {
print $2}
将打印出第4个字段为90的名字,B。
也可以在多个文件上执行这些命令。
awk '$3==0{print $2}' file1 file2
当程序命令较短时,选择使用单引号包装。当程序过长时,则可将其写入到文件中。
awk -f progfile optional list of input files #-f:表示从指定文件中获取程序
小结
awk命令默认是读取文件的一行内容,并根据空格和制表符分成多个字段,其中一个字段是不包含任何空格或者制表符的连续字符序列。其中$0为整行字符,$1为第一个字段,$2为第二个字段。
{
print } #打印每一行内容
#or
{
print $0}
2.awk的简单输出
利用print打印多个字段,
{
print $1, $3}
打印第一个和第三个字段,中间用空格分离,最后用回车符号结尾。如下所示,
1) 数学
2) 语文
3) 英语
字段数量
awk命令会对一行的多少个字段数进行计数,并将其存储在一个叫做NF的变量中。
{
print NF, $1, $NF}
#打印字段数目,以及第一个和最后一个字段
字段的计算
{
print $1, $2*$3}
行号
变量NR,存储行的计数。
{
print NR, $0