文字列が存在しない場合にのみファイルにテキストを追加するよりエレガントな方法は何ですか?

文字列が存在しない場合にのみファイルにテキストを追加するよりエレガントな方法は何ですか?

.desktopファイルにNoDisplay = trueを追加したいがアイテムが存在しない場合にのみ可能です。私は次のようにこれを行います。

grep -q 'NoDisplay=true' '/usr/share/applications/yelp.desktop' || bash -c 'echo "NoDisplay=true" >> /usr/share/applications/yelp.desktop'

同じことをする短い1行があるかどうか疑問に思います。

私はbashスクリプトでこのコマンドを使用しており、 "bash -c"コマンドを使用する必要があります。

ベストアンサー1

GNUがあればsedとても簡単です。

sed -zi '/NoDisplay=true/!s/$/\nNoDisplay=true/' file

-zパターンスペースで行全体を一度に処理するオプション(大容量ファイルには推奨されません)()設定がない場合は、末尾に追加され、!改行文字が挿入されます。注: 文字列で-i,-zと を置き換えるのは\n標準ではないので移植性はありません。

おすすめ記事