如何将sed更改限制在第一组

如何将sed更改限制在第一组,sed,Sed,我有一个文本文件,其中包含如下所示的条目 tag1start text1 text2 text3 text4 tag1end .. .. tag1start text5 text6 text7 text8 tag1end 我只需要更改第一组标记1开始标记1结束中的条目 我尝试使用范围,但它会影响两个集合。如何将其限制为仅第一组 /tag1start/,/tag1end/c\ Some other text1\ Some other text2\ Some other text3\ Some ot

我有一个文本文件,其中包含如下所示的条目

tag1start text1 text2 text3 text4 tag1end .. .. tag1start text5 text6 text7 text8 tag1end 我只需要更改第一组标记1开始标记1结束中的条目

我尝试使用范围,但它会影响两个集合。如何将其限制为仅第一组

/tag1start/,/tag1end/c\ Some other text1\ Some other text2\ Some other text3\ Some other text4\ Some other text5\ Some other text6\ tag1end 大致翻译为:除了从tag1结束到最后一行的部分(贪婪,即第一个tag1结束之后的所有内容)之外,执行以下操作:除了从第1行到tag1开始的部分,将foo转换为其他foo\

大致翻译为:除了从tag1结束到最后一行的部分(贪婪是第一个tag1结束之后的所有内容)之外,执行以下操作:除了从第1行到tag1开始的部分,将foo转换为其他foo\。

考虑:

$ sed '/tag1end/,${p;d}; /tag1start/,/tag1end/{s/^/Some other /}' file
Some other tag1start
Some other text1
Some other text2
Some other text3
Some other text4
tag1end
..
..
tag1start
text5
text6
text7
text8
tag1end
工作原理 /tag1end/,${p;d}

对于从第一行匹配标记1结束到结尾$范围内的所有行,按p打印该行,然后从下一行d开始

/tag1start/,/tag1end/{s/^/Some other/}

只有在尚未到达第一个tag1end时,才能使用此命令。如果尚未到达tag1end,并且处于/tag1start/,/tag1end/,则执行大括号中的命令。你可以把你喜欢的任何sed命令放在大括号里

考虑:

$ sed '/tag1end/,${p;d}; /tag1start/,/tag1end/{s/^/Some other /}' file
Some other tag1start
Some other text1
Some other text2
Some other text3
Some other text4
tag1end
..
..
tag1start
text5
text6
text7
text8
tag1end
工作原理 /tag1end/,${p;d}

对于从第一行匹配标记1结束到结尾$范围内的所有行,按p打印该行,然后从下一行d开始

/tag1start/,/tag1end/{s/^/Some other/}

只有在尚未到达第一个tag1end时,才能使用此命令。如果尚未到达tag1end,并且处于/tag1start/,/tag1end/,则执行大括号中的命令。你可以把你喜欢的任何sed命令放在大括号里

可能相关-可能相关-