UNIX:ファイルの最後の行を置き換えて、最後の追加の空行を削除する必要があります。

UNIX:ファイルの最後の行を置き換えて、最後の追加の空行を削除する必要があります。

ファイルの末尾の-WORをVWORに置き換える必要があります。

頑張りました

sed s/WOR/VWOR/g    

しかし、これはファイルに新しい空行があるまで機能しません。

だから私は使用しました

( cat FileName && echo ) | sed 's/WOR/VWOR/g'  

これはうまくいきます。しかし、sedはファイル全体を読んでいるので、交換に時間がかかります。

ベストアンサー1

ファイルが新しい行で終わっていることを確認してください。これは「テキストファイル」の要件です。

このコマンドはまさにその仕事をします:

[ -n $(tail -c1 FileName) ] && printf '\n' >> FileName

末尾の改行は必要なときだけ追加されるため、何度でも問題はなく、最後の文字だけを確認するので、速度が非常に高速です。

次に、(現在有効な)最後の行($)を変更します。

sed -ie '$s/WOR/VWOR/'

注:このコマンドはシンボリックリンクを物理ファイルに変換します。

おすすめ記事