Bash ネストループ [閉じる]

Bash ネストループ [閉じる]

次の形式の出力が必要です。

たとえば、入力ファイルの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、が倍数の場合10NRモジュロ10が0の場合)、a変数値に1を追加します。これにより、出力ファイルの番号付けが必要に応じて変更されます。

おすすめ記事