我的文件只有一行:

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

但执行以下脚本时,它会在末尾打印一个多余的空行:
$ awk -F, 'BEGIN{ RS=":" } {print $2}' employee-one-line.txt
John Doe
Jason Smith
Raj Reddy
Anand Ram
Jane Miller

$

为什么结尾有一个空行?

最佳答案

由于您已将记录分隔符设置为冒号,最后一条记录是105,Jane Miller,后跟换行符。print将一个ORS(输出记录分隔符)添加到它打印的内容的末尾,这样您就得到两个。
默认行为是awk使用换行符作为记录分隔符,然后在print时将其添加回。
在这种情况下,为了让awk吞掉换行符,可以将其添加到字段分隔符中:

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

关于linux - 为什么输出末尾包含空白行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36644795/

10-11 18:32