如何使用 sed 在特定行上方的 shell 文件中添加新行

Posted

技术标签:

【中文标题】如何使用 sed 在特定行上方的 shell 文件中添加新行【英文标题】:How to add a new line to a shell file above a specific line with sed 【发布时间】:2019-01-21 10:15:17 【问题描述】:

我想为文件apache-jmeter 4.0/bin/jmeter添加一个新行

文件最后2行如下

 fi
 "$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar. "$PRGDIR/ApacheJMeter.jar" "$@" 

我想在文件最后一行的上方添加一行,使输出如下所示

 fi
 #JVM_ARGS="-Xbootclasspath/p:/home/ubuntu/alpnboot.jar"
"$JAVA_HOME/bin/java" $ARGS $JVM_ARGS $JMETER_OPTS -jar. "$PRGDIR/ApacheJMeter.jar" "$@"

【问题讨论】:

【参考方案1】:

在Running JMeter 中建议将此类选项添加到setenv.sh 文件中:

要永久设置这些变量,您可以将它们放在 bin 目录中名为 setenv.sh 的文件中。该文件将在运行 JMeter 时通过调用 jmeter 脚本获取。

【讨论】:

【参考方案2】:

相关的 sed 命令类似于:

sed 's/^"\$JAVA_HOME\/bin\/java" \$ARGS \$JVM_ARGS \$JMETER_OPTS -jar "\$PRGDIR\/ApacheJMeter\.jar" "\$@"$/#JVM_ARGS="-Xbootclasspath\/p:\/home\/ubuntu\/alpnboot\.jar"\n&/' jmeter

请记住,sed 使用 Posix Basic Regular Expressions,因此您需要使用反斜杠转义任何 $.*/[\]^ 字符。


如果您要使用HTTP2 Sampler,您可以使更改永久化,这个-Xbootclasspath 选项不会有任何害处,打开和关闭它没有多大意义。

【讨论】:

以上是关于如何使用 sed 在特定行上方的 shell 文件中添加新行的主要内容,如果未能解决你的问题,请参考以下文章

linux shell 如何读取文件特定位置的数据?

用于包装嘈杂的python脚本并使用sed删除特定行的shell命令问题[重复]

Shell编程之正则表达式三剑客——sed工具

如何使用sed在文件中确定行插入带有变量的字符串

shell编程基础-sed命令

sed 在匹配行前后添加内容