我的文件只有一行:
$ 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
$
为什么结尾有一个空行?
答案 0 :(得分:3)
由于您已将记录分隔符设置为冒号,因此最后一条记录为105,Jane Miller
,后跟换行符。 print
将ORS
(输出记录分隔符)添加到它打印的内容的末尾,因此最终会有两个。
默认行为是awk将新行用作记录分隔符,然后在print
时将其重新添加。
为了让awk在这种情况下吞下换行符,一个选项就是将它添加到你的字段分隔符中:
awk -F'[,\n]' 'BEGIN{ RS=":" } {print $2}' file
答案 1 :(得分:0)
定义RS=':'
后,换行符不再是记录分隔符,因此终止文件的换行符会附加到“Jane Miller”。