码迷,mamicode.com
首页 > 其他好文 > 详细

awk处理多行记录

时间:2015-06-18 22:12:59      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:awk多行记录

我们所有的例子中用到的输入文件其记录都是由单独一行组成的。在这一部分,我们将演示如何读入一个记录,而记录中的每个字段都由单独一行组成。

前面我们了解了处理姓名和地址的文件的例子。让我们假设相同的数据保存在块格式的文件中。不是将所有的信息放置在一行,而是将人名放在一行,在下一行放置公司名、依此类推。下面是一个记录样本:

John Robinson
Koren Inc.
978 Commonwealth Ave.
Boston
MA 01760
696-0987

这个记录有6个字段,记录之间用空行分隔。为了处理这种包括多行数据的记录,我们可以将字段分隔符定义为换行符,换行符用"\n" 来表示,并将记录分隔符设置为空字符串,它代表一个空行。

BEGIN { FS = "\n"; RS = "" }

我们可以使用下面的脚本来打印第一个和最后一个字段:

cat block.awk
# block.awk -打印第一个和最后一个字段
# $1 = name; $NF = phone number
BEGIN { FS = "\n"; RS = "" }
{ print $1 , $NF}

例子的运行结果如下:

$ awk -f block.awk phones.block
John Robinson 696-0987
Phyllis Chapman 879-0900
Jeffrey Willis 914-636-0000
Alice Gold (707) 724-0000
Bill Gold 1-707-724-0000

这两个字段输出在同一行是因为默认的输出字段分隔符(OFS)仍然是一个空格。如果希望将这些字段输出在不同的行上,可以将OFS的值改变为一个换行符来实现。这样,你可能希望用空格将记录分隔开,因此必须将输出记录分隔符ORS设置为两个换行符。

参考资料:http://www.linuxawk.com/communication/497.html

awk处理多行记录

标签:awk多行记录

原文地址:http://blog.csdn.net/xiyangyang052/article/details/46552357

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!