まだ文字列データがない場合は、ここに文字列データをファイルに追加します(すべて1行にあります)。

まだ文字列データがない場合は、ここに文字列データをファイルに追加します(すべて1行にあります)。

この正確なデータがファイルにまだない場合、herestringを使用してファイルの末尾にデータ行を追加する「エレガントな」1行方法は何ですか?

これは私の文字列の追加パターンです。

cat >> /var/www/html/myFile <<< "myOutput"

答え1

s="myOutput"; grep -Fxqe "$s" < "$file" || printf "%s\n" "$s" >> "$file"

答え2

「myOutput」がファイルの最後の行全体になりたいとしましょう。

s="myOutput"; sed '$ {/^'"$s"'$/b; s/$/\n'"$s"'/}' file

s="myOutput"一致するようにパターンを設定すると、
sedsedを使用して
$ {…}' fileファイルの最後の行にある行全体に
/^'"$s"'$/bパターンを一致させ、一致すると最後まで分岐します。
s/$/\n'"$s"'/一致するものがない場合、パターンは最後の行に追加されます。

ファイルの最後の行以外の場所にすでに「myOutput」データが含まれている場合は、そのファイルの他のコピーがファイルの末尾に追加されます。

答え3

次のスクリプトは、最後の行全体変数iが存在することを確認し、そうでない場合はファイルの最後の行に変数iを挿入します。

テスト後の効果はとても良いです

#!bin/bash
i="praveen"
f=$(sed -n '$p' p.txt  | sed -n "/^$i$/p")
if [[ -z $f ]]
then
sed "\$s/.*/&\n$i/g" p.txt
else
echo "output exsists"
fi

関連情報