0

Cygwin では、この行に対して 2 つの異なる結果が得られます。XP では、列 (​​正しい出力) と Win7 がすべて 1 つの長い行に表示されます。

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変数を使用awkして、新しい行を設定します。

于 2013-06-26T19:45:59.240 に答える