awk コマンドでテキスト ファイルをフォーマットする

awk コマンドでテキスト ファイルをフォーマットする

私は次のコマンドを使用しています:

awk 'NR>1 {print $1"  "$2}' fort.75 > newfort.75

そして出力は次のようになる

     7  -2.2964292555E+000
     8 -2.3013363831E+000
     9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

しかし、望ましいo/pは

      7 -2.2964292555E+000
      8 -2.3013363831E+000
      9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

最初のフィールドの値は、すべて同じ幅になるようにフォーマットする必要があります。また、2 番目のフィールドは各行で同じ列から始まる必要があります。

答え1

おそらく、列で出力したいということなのでしょう (ただし、例ではデータも異なります)。その場合は、次を試してください。

awk 'NR>1 {print $1 "\t" $2}' fort.75 > newfort.75

出力は TAB 文字で区切られます\t

printfもう一つの可能​​性は、Archemar の提案に従って使用することです:

awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75

最初の列は (この場合は) 4 文字幅にフォーマットされています。必要に応じて調整してください。スペースはスペース " " (しゃれではありません) で埋められ、TAB は使用されません。ただし、浮動小数点数も再フォーマットされるため、問題ないか確認してください。問題がある場合は、2 番目の列を文字列として扱います。

awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75

関連情報