到目前为止,本教程用作例子的所有数据文件中,每条记录都自成一行。而在下面这个名为checkbook的示例数据文件中,记录之间用空行分隔,同一记录的字段之间则用换行符分隔。要处理这个文件,就必须将记录分隔符(RS)设为空值,而把字段分隔符(FS)设为换行符。
$ cat checkbook
1/1/04
#125
-695.00
Mortgage
1/1/04
#126
-56.89
PG&E
1/2/04
#127
-89.99
Safeway
1/3/04
+750.00
Paycheck
1/4/04
#128
-60.00
Visa
$ cat awkchecker
BEGIN{RS="";
FS="\n";
ORS="\n\n"}
{print NR,$1,$2,$3,$4}
$ awk -f awkchecker checkbook
1 1/1/04 #125
-695.00 Mortgage
2 1/1/04 #126
-56.89 PG&E
3 1/2/04 #127
-89.99 Safeway
4 1/3/04 +750.00 Paycheck
5 1/4/04 #128
-60.00 Visa
说明
1.在BEGIN块中,记录分隔符(RS)被赋值为空,字段分隔符(FS)被设为换行符,输出记录分隔符(ORS)则被设置为两个换行符。于是,每一行都是一个字段,且输出记录之间有两个换行符将其分隔。
2.打印记录号,后跟记录的每个字段。
参考资料:http://www.linuxawk.com/jiaocheng/332.html
awk多行记录
原文:http://blog.csdn.net/xiyangyang052/article/details/45749331