この正確なデータがファイルにまだない場合、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"
一致するようにパターンを設定すると、
sed
sedを使用して
$ {…}' 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