Shell脚本学习笔记——awk

sed以行为单位处理文件,awk比sed强的地方在于不仅能以行为单位,还能以列为单位处理文件。awk缺省的行分隔符是换行,缺省的列分隔符是连续的空格和Tab,但是行分隔符和列分隔符都可以自定义。

awk的基本用法和sed类似,awk命令行的基本形式为:

awk  option  'script'  file1  file2 ...

awk  option  -f  scriptfile  file1  file2 ...

和sed一样,awk处理的文件既可以由标准输入重定向得到,也可以当命令行参数传入。编辑命令可以直接当命令行参数传入,也可以用-f 参数指定一个脚本文件,编辑命令的格式为:

/pattern/{actions}

condition{actions}

和sed类似,pattern是正则表达式,actions是一系列操作。awk程序一行一行读出待处理文件,如果某一行与pattern匹配,或者满足condition条件,则执行相应的actions。若一条awk命令只有actions部分,则actions作用于待处理文件的每一行。


  • 常见命令

(1)print命令


使用print命令输出符合正则表达式的结果行,这里的$0代表整条记录(行),那如何打印具体到列呢?


此时,$1,$2表示指定的域(列),一张图表示:


输出多个域时,print使用逗号作为分隔符。



(2)根据条件进行输出



(3)awk定制分隔符

awk默认按照空格作为分隔符,若想定制分隔符,常用的方法是使用-F 选项。


-F可以支持多种符号进行定制分隔符。



(4)BEGIN & END

BEGIN 和 END 是awk中两个极具特色的表达式,可以用它们做文本处理之前的准备工作、之后的收尾工具,基本格式如下:

BEGIN{ } /REG/{ }  END{ }

BEGIN{ }  condition{ }  END{ }

任何在BEGIN之后列出的操作(在{ } 内)将在awk开始扫描输入之前执行,而END之后列出的操作将在扫描完全部的输入之后执行。因此,通常使用BEGIN来显示变量和初始化变量,使用END来输出最终结果。





猜你喜欢

转载自blog.csdn.net/cecilia3333/article/details/80767177