考虑以下文本文件(test.txt):
1 1 1
7 7 6
和awk脚本(test.awk)
{
print "$0 : ", $0
lines=(lines $0)
print "lines : ", lines
}
然后跑步:
awk -f test.awk test.txt
给出输出
$0 : 1 1 1
lines : 1 1 1
$0 : 7 7 6
7 7 6 : 1 1 1
虽然预期的输出应该(据我所见):
$0 : 1 1 1
lines : 1 1 1
$0 : 7 7 6
lines : 1 1 17 7 6
我在这里错过了什么?
(我在Ubuntu 12.04上使用GNU Awk 3.1.8)
答案 0 :(得分:3)
你在test.txt
(每行末尾的CRLF或\r\n
)都有DOS行结尾。
使用Unix行结尾输出:
$0 : 1 1 1
lines : 1 1 1
$0 : 7 7 6
lines : 1 1 17 7 6
用DOS行结尾输出:
$0 : 1 1 1
lines : 1 1 1
$0 : 7 7 6
7 7 6 : 1 1 1
使用以十六进制转储程序格式化的DOS行结尾输出:
0x0000: 24 30 20 3A 20 20 31 20 31 20 31 0D 0A 6C 69 6E $0 : 1 1 1..lin
0x0010: 65 73 20 3A 20 20 31 20 31 20 31 0D 0A 24 30 20 es : 1 1 1..$0
0x0020: 3A 20 20 37 20 37 20 36 0D 0A 6C 69 6E 65 73 20 : 7 7 6..lines
0x0030: 3A 20 20 31 20 31 20 31 0D 37 20 37 20 36 0D 0A : 1 1 1.7 7 6..
0x0040:
0D
代码是CR行结尾。