2つのファイルに分割する必要がある大きなファイルがあります。最初のファイルから1000行を選択して別のファイルに入れ、最初のファイルからこの行を削除する必要があるとします。
試してみましたが、split
複数のブロックが作成されます。
答え1
最も簡単な方法は、おそらく以下を使用することhead
ですtail
。
$ head -n 1000 input-file > output1
$ tail -n +1001 input-file > output2
その後、最初の1000行がに入り、input-file
1001output1
から最後まですべての行が入ります。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
自動的に分割します。別の出力ファイル名が必要な場合は、次のオプションを使用できます。infile
xx00
xx01
-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