次の形式の出力が必要です。
たとえば、入力ファイルの1から50までの数値シーケンスを考えてみましょう。各数字はデータ行を表します。
$ cat input.txt
1
2
3
.
.
.
49
50
私はそれらがそれぞれ10行の5つのファイルにあることを望みます。
$ cat output1.txt
1
2
.
.
.
9
10
$ cat output2.txt
11
12
.
.
.
19
20
など。コマンドを使用せずにBashスクリプトを介してこれを実行したいと思いますsplit
。
ベストアンサー1
離れてawk
いる:
awk -va=1 '{ print > a; if(NR % 10 ==0){a++} }' input
1
これで2
ファイルが作成され3
ます4
。 55
で印刷するには、output1
次の代わりに使用します。
awk -va=1 '{ print > "output"a; if(NR % 10 ==0){a++} }' input
説明する
-va=1
:変数a
をに設定します1
。print > "output"a;
:現在の行をファイル名output
と変数の現在の値として印刷しますa
。if(NR % 10 ==0){a++}
:NR
現在行番号です。したがってNR
、が倍数の場合10
(NR
モジュロ10が0の場合)、a
変数値に1を追加します。これにより、出力ファイルの番号付けが必要に応じて変更されます。