linux - 如何使用 shell 脚本追加到特定行?

标签 linux shell awk sed

我有一个文件 (catalina.properties) 包含特定行:
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar"

在另一个环境中它看起来像这样:
common.loader=

我需要一个在等号右侧附加一个额外部分的命令,并且在这两种情况下都有效,所以结果将是:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.base}/extra/part.jar"  

或者在其他情况下:

common.loader="${catalina.base}/extra/part.jar"

最佳答案

sed解决方案:

示例测试输入文件testfile:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar"
common.loader=
"ddd""sdsd"

sed 's~common\.loader=.*~&,"${catalina.base}/extra/part.jar"~; s/=,/=/' testfile

输出:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.base}/extra/part.jar"
common.loader="${catalina.base}/extra/part.jar"
"ddd""sdsd"

关于linux - 如何使用 shell 脚本追加到特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45690384/

相关文章:

linux - 通过 bash 打印 tsv 文件列中的所有值对

android - Docker:无法在 ubuntu 16.10 容器中执行挂载命令

bash - 是否可以将 if 语句放入管道中?

bash - 有没有一种简单的方法可以确定用户输入是否是 bash 中的整数?

linux - Jenkins 中的什么目录 shell 命令执行?

linux - 使用awk在矩阵中插入一行和一列

c++ - Qt - 错误 : unknown module networkauth

c - Linux 中的 strace 和 writev() 函数,数据中的 '@' 、 '2w' 和 '240K' 代表什么?

linux - 从日志文件中提取最近 24 小时的数据

python - 如何从文本文件中随机删除 100 个 block