質問: テキストファイルの行の中央セクションを抽出しますか? 私はphpスクリプトを記述して、大きなテキストファイルを解析してそこからデータベースを挿入します。しかし、私のホストでは、ファイルが大きすぎて、phpのメモリ制限に達しました。ファイルには約16,000行あります。それをロードできるかどうかを確認するために、(最初は)4つの個別のファイルに分割したいと思います。head -4000 file.txtで取得できる最初の部分。中央のセクションは少しトリッキーです-tail出力をhead(tail -4001 file.txt | head -4000 > section2.txt)にパイプすることを考えていましたが、別の/より良い方法はありますか?実際、私のロジックはめちゃくちゃです-セクション2の場合、tail -12001 file.txt | head - 4000のようにして、次のセクションのtail引数を下げる必要があります。私はすでに混乱しています! :p
回答: あなたがしたように頭と尾を組み合わせることはうまくいきますが、これのために私はsedを使用しますsed -n '1,4000p' input_file # print lines 1-4000 of input_file これにより、迅速なシェル機能で問題を解決できますchunk_it(){ step=4 start=1 end=$step for n in {1..4} ; do sed -n "${start},${end}p" "$1" > "$1".$start-$end let start+=$step let end+=$step done } chunk_it your_file これで、your_file.1-4000とyuor_file.4001-8000などになります。注:bashが必要です