ファイルを2つに分割

ファイルを2つに分割

2つのファイルに分割する必要がある大きなファイルがあります。最初のファイルから1000行を選択して別のファイルに入れ、最初のファイルからこの行を削除する必要があるとします。

試してみましたが、split複数のブロックが作成されます。

答え1

最も簡単な方法は、おそらく以下を使用することheadですtail

$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2

その後、最初の1000行がに入り、input-file1001output1から最後まですべての行が入ります。output2

答え2

私はこれがsplit最善のアプローチだと思います。

この-l xxxxオプションを試してください。ここで、xxxx は各ファイルで必要な行数です (デフォルトは 1000)。

-n yy生成されたファイルの数に興味がある場合は、このオプションを使用してください。-n 2各ファイルに数行があっても、を使用するとファイルは2つの部分にのみ分割されます。

を使用してファイルの行数を計算できますwc -l filename。これは行オプションを持つ「wordcount」コマンドです。

引用する

  • man split
  • man wc

答え3

これは仕事です。csplit:

csplit -s infile 1001 

最初の部分(ライン1001まで)と2番目の部分(残りの行を含む)をs自動的に分割します。別の出力ファイル名が必要な場合は、次のオプションを使用できます。infilexx00xx01
-fプレフィックス:

csplit -sf piece. infile 1001 

piece.00次の2つのファイルを作成します。piece.01


賢いなら、head次のようにすることもできます。

{ head -n 1000 > 1st.out; cat > 2nd.out; } < infile

答え4

1つのコマンドで質問で要求されるタスクを実行する簡単な方法は次のとおりです。

awk '{ if (NR <= 1000) print > "piece1"; else print > "piece2"; }' bigfile

または長くて直感的に理解できるコマンドを入力するのが本当に嫌いな人のために、

awk '{ print > ((NR <= 1000) ? "piece1" : "piece2"); }' bigfile

関連情報