gpt4 book ai didi

多行 sed 不替换模式

转载 作者:行者123 更新时间:2023-12-04 06:32:03 24 4
gpt4 key购买 nike

我一直在使用 sed(在这里找到教程:Grymoire)我们从硬件供应商那里获得的 ASCII 文件。文件有这样的结构

Model-Manufacturer:D12-500
Test_Version:2.6.3

但是我们收到的一些文件是随机“损坏”的,并且漏掉了“Model-Manufacturer:”的条目
Model-Manufacturer:D12-500
Test_Version:2.6.3
Model-Manufacturer:H24-700
Test_Version:2.6.3
Test_Version:2.6.3
Model-Manufacturer:R15-300
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

它不起作用。我相信在进行替换之前我需要记住每个“Test_Version”和“Model_Manufacturer”的位置,对吗?我可以用 sed 做到这一点吗?

预先感谢您的意见。

最佳答案

将您的替换更改为:

s||\nModel-Manufacturer:N/A&|

使用备用分隔符意味着您不必转义“N/A”中的斜线。使用空的左侧重用最近的匹配。 &符号将匹配复制到右侧。

此外,您需要删除 -n .

关于多行 sed 不替换模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com