为什么输出末尾包含空行?

时间:2016-04-15 10:34:04

标签: linux awk

我的文件只有一行:

$ cat employee-one-line.txt
101,John Doe:102,Jason Smith:103,Raj Reddy:104,Anand Ram:105,Jane Miller
$

但是执行以下awk脚本,它会在结尾打印一个冗余的空行:

$ awk -F, 'BEGIN{ RS=":" } {print $2}' employee-one-line.txt
John Doe
Jason Smith
Raj Reddy
Anand Ram
Jane Miller

$

为什么结尾有一个空行?

2 个答案:

答案 0 :(得分:3)

由于您已将记录分隔符设置为冒号,因此最后一条记录为105,Jane Miller,后跟换行符。 printORS(输出记录分隔符)添加到它打印的内容的末尾,因此最终会有两个。

默认行为是awk将新行用作记录分隔符,然后在print时将其重新添加。

为了让awk在这种情况下吞下换行符,一个选项就是将它添加到你的字段分隔符中:

awk -F'[,\n]' 'BEGIN{ RS=":" } {print $2}' file

答案 1 :(得分:0)

定义RS=':'后,换行符不再是记录分隔符,因此终止文件的换行符会附加到“Jane Miller”。