【发布时间】:2021-02-13 03:27:48
【问题描述】:
我只想在两个模式之间的块中插入带有特定字符串的文本。 输入文件示例:
text text
text text
...
[textabc pattern 1]
text text
text text
xyz = 123 #below this string I want to insert new text
text text
[textdef pattern 2]
text text
text text
我想在“xyz = 123”行下方插入“新字符串”,但前提是字符串介于“[textabc 模式 1]”和“[textdef 模式 2]”之间。 输出文件:
text text
text text
...
[textabc pattern 1]
text text
text text
xyz = 123
NEW STRING
text text
[textdef pattern 2]
text text
text text
我尝试过这样的事情:
sed -i '/^\[textabc pattern 1\]$/,/^\[textdef pattern 2\]/ ^xyz .*/a NEW STRING/' /folder/file.txt
如何使用 sed 做到这一点?
【问题讨论】:
-
似乎您需要编写一个脚本并遍历文件两次。有一个布尔标志来指示您是否找到“开始”标签,一个 int 来指示所需文本的行号,然后如果您在另一个开始标签之前找到一个“结束”标签,您将存储行号。再次通过文件并在以下行号上添加新文本。如果有多个,则必须增加存储的行号。我个人会使用 Python。如果您需要帮助,请告诉我。
-
请提供更清晰的样本,以便我们更清楚地了解您的问题,谢谢。