使用RS和RT在Awk命令中匹配多个string

使用RS和RT在Awk命令中匹配多个string,第1张

概述使用RS和RT在Awk命令匹配多个string

我有以下数据:

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}' 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

题:

将十进制数字的序列转换为Big endian float

如何使用bash将一行文本添加到文件的中间?

如何使用AWK从Web日志中收集IP和用户代理信息?

将awk脚本的输出redirect到一个文件

我怎样才能通过我的组/集群过滤只保留不同的column2值?

我只想知道如何添加“或”选项来匹配任何以“ --Hello开头的--Hello 。 什么是适当的方式来实现我的代码?

其他选项:

或者,另一种select是使用grep -o '<tag.*tag>|^--.*'但是我也需要find匹配换行符的方法(如这里所述: 匹配string之间的任何内容Grep命令 )。

任何帮助,高度赞赏。

合并非常大的csv文件与公共列

Sed | awk在匹配下一行后删除行

如何使用多个(嵌套)分隔符从文本中提取值

在awk中转义HTML特殊字符

在bash -c中设置variables

你可以修改你以前的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

$ cat tst.awk BEGIN { RS="--Hello[^\n]+|<\/tag>" } RT { print (RT~/^--/ ? "" : gensub(/.*(<tag>)/,1)) RT } $ awk -f tst.awk file <tag>Example line 1</tag> --Hello Example line 1.7 <tag> Example line 2 </tag> --Hello Example line 2.7

以上使用GNU awk来处理多字符RS,RT和gensub()。

总结

以上是内存溢出为你收集整理的使用RS和RT在Awk命令中匹配多个string全部内容,希望文章能够帮你解决使用RS和RT在Awk命令中匹配多个string所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1155686.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存