我在Cygwin中得到2个不同的结果。在XP中,列(正确的输出)和Win7都在一条长行上
awk '{$0=sprintf("%.1f%.1f%4s", $1,$2,$3);gsub(/ /,"0");gsub(/\./,"")}1' /cygdrive/e/$1.txt > /cygdrive/e/$1.bod
由于
输入:(35030035.txt)
4.65 2.38 15
4.71 3.36 775
3.52 3.03 53
4.05 3.33 71
3.22 2.99 346
XP输出:(35030035.bod) 这是正确的输出
47240015
47340775
35300053
40330071
32300346
Win7输出:(35030035.bod)
4724001547340775353000534033007132300346
答案 0 :(得分:1)
看起来线路终结器搞砸了。在\n
函数中尝试明确sprintf
。
<强> sprintf("%.1f%.1f%4s\n", $1,$2,$3)
强>
或代替1
执行print $0
。
awk {$0=sprintf("%.1f%.1f%4s", $1,$2,$3);gsub(/ /,"0");gsub(/\./,"");print $0}'
替代使用RS
awk
变量来设置新行。