web-dev-qa-db-ja.com

大きなテキストファイルの最初の行を編集する

巨大なテキストファイルがあり、全体をメモリにページングするには大きすぎます。このテキストファイルで必要なのは、最初の行を編集することだけです(CSVファイルであり、タイトルを変更する必要があります)。

これをbashで行う簡単な方法はありますか?

16
lynks

lessを使用して編集する内容を確認し、sedを使用して変更を加えることができます。これにより、ファイル全体をロードせずに編集できます。

別の方法は、ファイルを分割し、編集して再度結合することです:

split -b 10000k <file>

and to join:

cat xa* > <file>
22
laurent

変更により行の長さが変更された場合、ファイル全体を書き直す必要があります。たとえば、SOの この説明 を参照してください。データをデータベースに保存することを検討する必要があります。

これを念頭に置いて、sedを使用してファイルをストリーム編集できます。最初の行を置き換えるには、次のようにします(GNU sed)。

< oldfile sed '1c\new_heading' > newfile
3
Thor