2012-02-13 9 views
10

私は問題を解決できません。 .txtファイルの一部をn行からn + y行にコピーする必要があります(1000〜1000000としましょう)。このファイルは非常に大きいので、手動ではできません。そのため、ターミナルを使用して成功を収めようとしています。 今、私は演算子とsedを試してみました。ここに私が試したもののコピーだ: "1000、1000000p" パス/最初の/ファイル-n sedのターミナル(またはシェル)を使用してファイルの一部を別のファイルにコピー/ペーストします

>パス/秒/ファイル

すべてのヘルプは本当に感謝されます。)

+1

この例ではsedコマンドに何も問題はありません。どのように失敗するのですか? –

+0

入力ファイルの行末が正しくない場合は、最初に変換する必要があります。 'dos2unix'を試してみてください。 – tripleee

答えて

19

あなたのソースファイル(wc -l)にいくつの行があるか知っていれば、これを行うことができます。12000行を仮定し、新しいファイルに行2000〜7000を追加します(合計5000行)。

cat myfile |テール-10000 | head -5000> newfile

最後の10k行を読み、そこから最初の5k行を読みます。

+0

ファイル内にいくつの行があるかを知る必要はありません。単純に先頭を置くだけです。 – jfg956

+0

そして、最初にテールを置く場合は、 'tail -n + 2000'を使うことができます。これはまた、より少ないバッファスペースを要する。 – jfg956

+1

ブリンブ、猫の無用な使用。しかも、元の 'sed'コマンドはこれでうまくいきました。 – tripleee

1

実際にsedコマンドは二重引用符を一重引用符で置き換えるだけです

関連する問題