Awk 如何在下一行中插入模式匹配的行?

Awk 如何在下一行中插入模式匹配的行?,awk,sed,Awk,Sed,我在文件中有一组行,我想在输出后插入一个新行,内容与行相同,但不是uat\u reset\u fwd\u outputs而是Test\u sample\u data [serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs] [serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs] [serverClass:UAT_TEST_Forwarder:app:uat_test_inputs]

我在文件中有一组行,我想在输出后插入一个新行,内容与行相同,但不是
uat\u reset\u fwd\u outputs
而是
Test\u sample\u data

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs]  
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs]  

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs]  
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs]  

The output should look like below:  

[serverClass:UAT_SAI_Forwarder:app:uat_sai_inputs]  
[serverClass:UAT_SAI_Forwarder:app:uat_reset_fwd_outputs]  
[serverClass:UAT_SAI_Forwarder:app:Test_sample_data]  

[serverClass:UAT_TEST_Forwarder:app:uat_test_inputs]  
[serverClass:UAT_TEST_Forwarder:app:uat_reset_fwd_outputs]  
[serverClass:UAT_TEST_Forwarder:app:Test_sample_data]  

使用
sed

sed 's/\(^.*\):.*outputs.*$/\0\n\1:Test_sample_data]/g' file.txt
此命令匹配任何包含字符串“outputs”的行,捕获行的第一部分(在\1中)并将“Test\u sample\u data”附加到该行中。

尝试以下操作:

sed '/:[^:]*outputs] *$/{h;s//:Test_sample_data]/;x;G}' file
更新:

新行将附加到任何以
输出]
结尾的行

使用以下命令:

perl -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file
如果要进行就地更换,请使用以下方法:

perl -i -lne 'print;if(/uat_reset_fwd_outputs/){s/uat_reset_fwd_outputs/Test_sample_data/;print $_}' your_file

这将替换字符串匹配模式“outputs”以测试样本数据。但我需要将输出追加到匹配模式的下一行。输出应如下所示:[serverClass:UAT\U Test\U转发器:app:UAT\U Test\U inputs][serverClass:UAT\U Test\U转发器:app:UAT\U reset\U fwd\U outputs][serverClass:UAT\u TEST\u Forwarder:app:TEST\u sample\u data]它没有替换输出行。它在它后面追加了一个新行。
\0\n\1
就是这样做的。你试过运行我的命令吗?是的,我试过了,输出如下:sed's/(^.*)outputs.$/\0\n\1:TEST sample\u data]/g'pesting[serverClass:UAT_-SAI_转发器:应用程序:UAT_-SAI_输入]0n[serverClass:UAT_-SAI_转发器:应用程序:测试样本数据][serverClass:UAT_测试转发器:应用程序:UAT_测试样本数据]0n[serverClass:UAT_测试转发器:应用程序:测试样本数据]必须是你的sed版本。它在GNU sed版本4.2.1上运行良好。你的
sed--version
是什么?我的不是GNU版本。我使用Mac book。你能帮我在Mac上解决这个问题吗?它不起作用。问题中有一个小的修正。uat_reset_fwd_输出不是常数。例如,我给出了uat_reset_fwd_输出,th文件中有很多行以输出结尾。另外,我想传达我的不是GNU版本。我使用Mac。