入力ファイルからN列ごとに抽出し、抽出順序に従って出力ファイルに書き込むためのコードを書くのに苦労してきました。
(私の実際のケースでは、列6から始まる合計24005列のファイルから800列ごとに抽出するため、ループが必要です)
以下のより単純なケースでは、2番目の列の開始点を持つ入力ファイルから3列(フィールド)ごとに抽出します。
たとえば、入力ファイルが次のようになっている場合:
aa 1 2 3 4 5 6 7 8 9
bb 1 2 3 4 5 6 7 8 9
cc 1 2 3 4 5 6 7 8 9
dd 1 2 3 4 5 6 7 8 9
そして、出力を次のようにしたいと思います。output_file_1:
1 2 3
1 2 3
1 2 3
1 2 3
output_file_2:
4 5 6
4 5 6
4 5 6
4 5 6
output_file_3:
7 8 9
7 8 9
7 8 9
7 8 9
私はこれを試しましたが、機能しません:
awk 'for(i=2;i<=10;i+a) {{printf "%s ",$i};a=3}' <inputfile>
構文エラーが発生し、修正すればするほど問題が発生します。
Linuxコマンドカットも試しましたが、大きなファイルを処理している間、これは簡単に思えます。そして、cutはawkのように3フィールドごとにループカットを行うのだろうかと思います。
誰かがこれを手伝って、簡単な説明をしてくれませんか?前もって感謝します。