2010-12-02 36 views
0

ファイルのサイズは約5.5GBです。私はファイルの特定の行を表示したい。行番号100001と私は自分のテキストでその行を置き換えたいと言うことができます。どのようにUnixコマンドを使用してこの操作を達成する。エディタでファイルを表示できません。私は開けられず、それは遠隔の機械です。UNIXファイルを特定の行に置き換えます。

誰でもその行を表示し、他のテキストと置き換えることができますか?

感謝:)

+0

ご質問が誤解されている場合を除き、開けない場合はご希望がありません。 – Actorclavilis

+0

その行がどのように見えているか知っていれば、 'sed'を使ってファイルのその行を見つけて置き換えることができます。しかし、ファイルを開くことができない場合、 'sed'はそれほど役に立ちません。 – vpit3833

+0

おそらくファイルサイズのために開けません。それだけでなく、リモートであるので、SSH経由でアクセスしている可能性があります。 – Ruel

答えて

1

あなたはインプレース行を変更したいと置換データを使用して、(慎重に!)にddを使用することができ、テキストと同じ長さで置き換えられている場合には、ファイルの一部を上書きします。

# getting the byte offsets of the start and length of the line 
perl -ne '$s+=length; if ($.==100001) {print "$s + ",length,"\n"; exit}' bigfile 

# writing over the existing data 
echo 'new line' | dd of=bigfile bs=1 seek=$start count=$length conv=notrunc 

置換データが異なる長さであり、それは、ファイルの最後にない場合は、ファイルを書き換えるしかありません。これには、bigfileとそのコピーの両方を保持するのに十分なディスク容量が必要です。

# The old file is renamed to bigfile.bak; a new bigfile is written with changes. 
sed -i.bak -e '100001 c \ 
new line' bigfile 
関連する問題