0
ファイルのサイズは約5.5GBです。私はファイルの特定の行を表示したい。行番号100001と私は自分のテキストでその行を置き換えたいと言うことができます。どのようにUnixコマンドを使用してこの操作を達成する。エディタでファイルを表示できません。私は開けられず、それは遠隔の機械です。UNIXファイルを特定の行に置き換えます。
誰でもその行を表示し、他のテキストと置き換えることができますか?
感謝:)
ファイルのサイズは約5.5GBです。私はファイルの特定の行を表示したい。行番号100001と私は自分のテキストでその行を置き換えたいと言うことができます。どのようにUnixコマンドを使用してこの操作を達成する。エディタでファイルを表示できません。私は開けられず、それは遠隔の機械です。UNIXファイルを特定の行に置き換えます。
誰でもその行を表示し、他のテキストと置き換えることができますか?
感謝:)
あなたはインプレース行を変更したいと置換データを使用して、(慎重に!)に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
ご質問が誤解されている場合を除き、開けない場合はご希望がありません。 – Actorclavilis
その行がどのように見えているか知っていれば、 'sed'を使ってファイルのその行を見つけて置き換えることができます。しかし、ファイルを開くことができない場合、 'sed'はそれほど役に立ちません。 – vpit3833
おそらくファイルサイズのために開けません。それだけでなく、リモートであるので、SSH経由でアクセスしている可能性があります。 – Ruel