多行Sed不能替代模式
我一直在用我们从硬件供应商那里得到的sed(在这里找到教程:)ASCII文件进行按摩。文件的结构如下多行Sed不能替代模式,sed,Sed,我一直在用我们从硬件供应商那里得到的sed(在这里找到教程:)ASCII文件进行按摩。文件的结构如下 Model-Manufacturer:D12-500 Test_Version:2.6.3 但我们收到的一些文件是随机“损坏”的,并且遗漏了“型号制造商:”的条目: 我想用Sed解决这个问题,并在第二次出现“Test_Version:2.6.3”之前放置“Model Manufacturer:N/A”缺少的条目;这是我的密码 sed -n ' /Test_Version/ { # found
Model-Manufacturer:D12-500
Test_Version:2.6.3
但我们收到的一些文件是随机“损坏”的,并且遗漏了“型号制造商:”的条目:
我想用Sed解决这个问题,并在第二次出现“Test_Version:2.6.3”之前放置“Model Manufacturer:N/A”缺少的条目;这是我的密码
sed -n '
/Test_Version/ {
# found "Test_Version" - read in next line
N
# look for "Test_Version" on the second line
# and print if there.
/\n.*Test_Version/ {
# found it - now edit making one line
s/Test_Version/Model-Manufacturer:N/A/
}
}' infile > outfile
它不起作用了。我相信在更换之前,我需要记住每个“测试版本”和“型号制造商”的位置,对吗?我能和塞德一起做这个吗
提前感谢您的投入。如果我了解您想要实现的目标,您已经非常接近了。我认为将替换命令更改为以下命令可以使其正常工作:
s/\nTest_Version/\nMode-Manufacturer:N\/A\nTest_Version/
将替换更改为:
s||\nModel-Manufacturer:N/A&|
使用备用分隔符意味着您不必在“N/A”中转义斜杠。使用空的左侧重复使用最近的匹配。符号将火柴复制到右边
另外,您需要删除
-n
我的替换已关闭。你的成功了。非常感谢。就个人而言,塞德真的踢了一个**。
s||\nModel-Manufacturer:N/A&|