0

我在 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
4

1 回答 1

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变量 ofawk来设置新行。

于 2013-06-26T19:45:59.240 回答