将此处的字符串数据附加到文件中(如果该文件中尚不存在)(全部在一行中)

将此处的字符串数据附加到文件中(如果该文件中尚不存在)(全部在一行中)

如果该文件中还没有这个确切的数据,那么用herestring将一行数据附加到文件末尾的“优雅”单行方法是什么?

这是我的这里字符串附加模式:

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

相关内容