電子書籍の厳選無料作品が豊富!

UNIXのviでファイルを開くと最終行が不完全といわれてしまいます。最後に半角スペースと変な文字が入っているようです。
viエディタのコマンドで、DDを押し最終行を手動でカットすると直るのですが、
Cやシェルなどで最終行をカットする方法はありますでしょうか?

A 回答 (2件)

sed を使ってみましょうか。

以下のようにすればいけたはず。

sed '$d' file > newfile

「$」は最終行を表すアドレス指定、「d」はその行を削除することを表します。
パターンスペースやホールドスペースなどと言い出すと一気に話が複雑になりますが、
単純な置換なら sed におまかせ!です。

参考URL:http://www.chimimo.com/sed/
    • good
    • 0
この回答へのお礼

sedすごいんですね。完璧でした。
ありがとうございました(^^)

お礼日時:2003/07/08 15:00

wcで行数を数えて、その行数だけheadで取り出せばいいと思います。



最終行が不完全とは、最終行に改行がないという意味だと思います。wc -lの結果は手元のマシンでは改行のない最終行はカウントしませんでしたので、
head -`wc -l <originalfile` originalfile >newfile
とすればいいでしょう。wcの仕様が違って、改行のない最終行も1行と数える場合は、shなら
head -`expr \`wc -l <originalfile\` - 1` originalfile > newfile
となります。cshは文法が違うので注意してください。
` はシングルクォートではなく、バッククォートです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!