linux - 更改文本文件中的一行(如果存在)

标签 linux bash replace sed line

我知道您可以在 bash 中使用 sed 更改文本文件中显示类似内容的行;

name="applicationname"//这不是问题(它各不相同,这就是我使用 var 的原因)

描述:http://google.com 或者 描述:http://yahoo.com//有时描述中的“值”会发生变化

描述:http://mysite.com/depiction.php?package=applicationname//这是我想要实现的格式

通过使用 sed,但我不完全确定如何实现 sed。 http://www.gnu.org/software/sed/

编辑:这是我刚刚想到的

sed -i "s!Depiction:.*!Depiction: http://mysite.com/depiction.php?package=$name!" ./inputfile

如果在这个特定的文本文件中,没有“描述:”怎么办? 我如何插入一行:描述:http://mysite.com/depiction.php?package=applicationname

最佳答案

您可以这样尝试:删除“Depiction:”的所有实例,然后附加您想要的行

{
  grep -v "Depiction:" filename
  echo "Depiction: ..."
} > newfile && mv newfile filename

关于linux - 更改文本文件中的一行(如果存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10076675/

相关文章:

linux - 如何跟踪 Linux 内核中网络子系统的内存使用情况?

linux - 对 shell 中的一些标准输入或 heredoc 用法感到困惑

linux - 在 Linux 中,如何查找修改日期不早于给定文件的文件?

java - 我无法让 Replace/replaceAll 工作

linux - 如何在 Linux/Unix 中将多个文件从一个扩展名重命名为另一个?

linux - 如何使用 bash 获取鼠标按下和释放位置

python - 给定比例将文件随机分发到训练/测试中

linux - 在 bash 中从另一个变量创建一个变量

javascript - 删除第一个数字,然后是 ";",然后删除其余的 ";",但保留后面的数字

javascript - RegExp "g"标志未替换每个实例