我有以下文本文件records.text
IronMan 1 2 3 Batman 1 2 3
我有以下awk命令
awk 'BEGIN{ FS="\n"; RS="\n\n"} {print NR, ":", $1, $2}' records.text
我得到以下输出
1: Ironman 2: 1 3: 2 4: 3 5: 6: Batman 7: 1 8: 2 9: 4
Expected output: 1: Ironman 1 2: Batman 1
哪个错了。这意味着RS变量未被拾取并且仍然使用默认" \ n"作为记录分隔符?其他人有同样的问题吗?任何解决方案?
答案 0 :(得分:3)
与gnu awk不同,OSX的BSD awk不处理多字符记录分隔符。你必须以不同的方式尝试,一次处理一行。
答案 1 :(得分:2)
从你的表达中,我确实得到了(在添加了缺失之后}
awk 'BEGIN{ FS="\n"; RS="\n\n"} {print NR, ";", $1, $2}' file
1 ; IronMan 1
2 ; Batman
在此处遗漏1
,与您喜欢的内容进行比较。
PS这还需要gnu awk
RS
当您处理由空行分隔的记录时,您应该将记录选择器设置为空。
awk -v RS="" '{print NR, ";", $1, $2}' file
1 ; IronMan 1
2 ; Batman 1