パイプを分割するには、gunzip -c または zcat を使用してファイルを開きます
gunzip -c bigfile.gz | split -l 400000
分割コマンドに出力仕様を追加します。
これを最適に行う方法は、目的によって異なります:
- 大きなファイルの一部を抽出しますか?
- それとも、一度にすべてのパーツを作成しますか?
ファイルの一部のみが必要な場合 、 gunzip
を使用するあなたのアイデア と head
は正しい。以下を使用できます:
gunzip -c hugefile.txt.gz | head -n 4000000
これにより、最初の 4000000 行が標準出力に出力されます。実際にデータで何かを行うには、おそらく別のパイプを追加する必要があります。
他の部分を取得するには、 head
の組み合わせを使用します と tail
など:
gunzip -c hugefile.txt.gz | head -n 8000000 |tail -n 4000000
2 番目のブロックを取得します。
<ブロック引用>おそらくこれらの一連の解決策を実行していますか、それとも gunzip -ファイル全体を解凍するのに十分なスペースが必要ですか?
いいえ、gunzip -c
です ディスク容量を必要としません。すべてをメモリ内で実行してから、stdout にストリーミングします。
一度にすべてのパーツを作成したい場合 、入力ファイルが一度だけ読み取られるため、単一のコマンドでそれらすべてを作成する方が効率的です。良い解決策の 1 つは split
を使用することです。;詳細については、ジム・マクナマラの回答を参照してください。
(巻き戻し不可の) ストリームで作業しているため、'+N' 形式の末尾を使用して、N 行目以降の行を取得する必要があります。
zcat hugefile.txt.gz | head -n 40000000
zcat hugefile.txt.gz | tail -n +40000001 | head -n 40000000
zcat hugefile.txt.gz | tail -n +80000001 | head -n 40000000
特定のディレクトリ内に作成されたファイルのグループと権限を強制するにはどうすればよいですか?
ログイン プロンプトまたはヘッダー (/etc/issue) を変更して、マシンの IP アドレスを表示します。