Excel 2003 からインポートしたファイルをコマンド ラインで編集および並べ替える

Excel 2003 からインポートしたファイルをコマンド ラインで編集および並べ替える

Excel 2003 から次の基本形式でインポートされたテキスト ファイルがあります。

43038    12500    s.ramesh    labour

43038    13000    m.ramesh    doctor

このファイルは、列 1 が 1 ~ 5 となるような形式で配置する必要があります。

問題は、列 2、3、4 が特定の順序で配置されていないことです。

このファイルを次のような順序にしたい

  • ファイル全体の2列目は15~19番目の場所にある必要があります
  • 3列目は49-65にあるべきである
  • 列4は75~95番目の位置にある必要があります

ファイルには 100000 行と 4 列があります。

私は毎日約 100 個のファイルに対してこの操作を実行する必要があるため、sort、vi、またはその他のエディターやシェルが役立つかどうかについてアドバイスを求めています。

答え1

Perl のようなスクリプト言語はこれに最適です。

$ cat t2
5 2 r.gritty teaboy
43038 12500 s.ramesh labour
43038 13000 m.ramesh doctor

$ perl -ane 'printf("%5s %5s\n", $F[2],$F[1])' t2
r.gritty     2
s.ramesh 12500
m.ramesh 13000

または

$ perl  -ane 'printf("%5s %0.5d\n", $F[2],$F[1])' t2
r.gritty 00002
s.ramesh 12500
m.ramesh 13000

数百のファイルを一度に編集するには

$ perl -i -ane 'printf("%5s %5s\n", $F[2],$F[1])' t1 t2 t3 t4 t5 *.txt foo/t6

関連情報