gpt4 book ai didi

linux - 使用 RS 和 RT 在 awk 命令中匹配多个字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:25 25 4
gpt4 key购买 nike

我有以下数据:

Example line 0</span>
<tag>Example line 1</tag>
<span>Example line 1.5</span>
--Hello Example line 1.7
<tag>
Example line 2
</tag>
--Hello Example line 2.7
<span>Example line 4</span>

使用此命令 awk -v RS='</tag>' 'RT {gsub(/.*?<tag>|\n/, ""); print "<tag>" $0 RT}'我得到:

<tag>Example line 1</tag>
<tag>Example line 2</tag>

但是,我希望输出为:

<tag>Example line 1</tag>
--Hello Example line 1.7
<tag>Example line 2</tag>
--Hello Example line 2.7

问题:

我只想知道如何添加“或”选项来匹配任何以 --Hello 开头的行.在我的代码中实现的正确方法是什么?

其他选项:

或者,另一种选择是使用 grep -o '<tag.*tag>\|^--.*'但我还需要找到一种匹配换行符的方法(如此处所问:Match Anything In Between Strings For Linux Grep Command)。

非常感谢任何帮助。

最佳答案

您可以将之前的 awk 命令修改为:

awk -v RS='</tag>' '/\n--Hello /{print gensub(/.*\n(--Hello [^\n]*).*/, "\\1", "1")}
RT{gsub(/.*<tag>|\n/, ""); print "<tag>" $0 RT}' file

<tag>Example line 1</tag>
--Hello Example line 1.7
<tag>Example line 2</tag>
--Hello Example line 2.7

关于linux - 使用 RS 和 RT 在 awk 命令中匹配多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40052458/

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