Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多行Sed不能替代模式_Sed - Fatal编程技术网

多行Sed不能替代模式

多行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

我一直在用我们从硬件供应商那里得到的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 "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&|