使用搜索模式注释一行并插入新行 shell 脚本
comment a line using search pattern and insert new line shell script
我正在尝试使用搜索模式注释文件中的一行,然后在其旁边插入新行。
search_variable=Dlog4j2.formatMsgNoLookups
new_variable="wrapper.java.additional.47=-Dlog4j2.formatMsg=false"
cat testfile.txt
wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
这个有效,但试图使用变量来注释该行并且
sed -i '/Dlog4j2.formatMsgNoLookups/s/^/#/g' testfile.txt
输出:
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
期望的输出
cat testfile.txt
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
wrapper.java.additional.47=-Dlog4j2.formatMsg=false
使用 GNU sed
:
search_variable="Dlog4j2.formatMsgNoLookups"
new_variable="wrapper.java.additional.47=-Dlog4j2.formatMsg=false"
sed -i "s/.*${search_variable}.*/#&\n${new_variable}/" testfile.txt
输出到testfile.txt:
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
wrapper.java.additional.47=-Dlog4j2.formatMsg=false
&
的含义见using sed with ampersand (&)。
这种情况下大括号也可以省略。
这也有帮助:Difference between single and double quotes in bash
我正在尝试使用搜索模式注释文件中的一行,然后在其旁边插入新行。
search_variable=Dlog4j2.formatMsgNoLookups
new_variable="wrapper.java.additional.47=-Dlog4j2.formatMsg=false"
cat testfile.txt
wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
这个有效,但试图使用变量来注释该行并且
sed -i '/Dlog4j2.formatMsgNoLookups/s/^/#/g' testfile.txt
输出:
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
期望的输出
cat testfile.txt
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
wrapper.java.additional.47=-Dlog4j2.formatMsg=false
使用 GNU sed
:
search_variable="Dlog4j2.formatMsgNoLookups"
new_variable="wrapper.java.additional.47=-Dlog4j2.formatMsg=false"
sed -i "s/.*${search_variable}.*/#&\n${new_variable}/" testfile.txt
输出到testfile.txt:
#wrapper.java.additional.47=-Dlog4j2.formatMsgNoLookups=true
wrapper.java.additional.47=-Dlog4j2.formatMsg=false
&
的含义见using sed with ampersand (&)。
这种情况下大括号也可以省略。
这也有帮助:Difference between single and double quotes in bash