概述使用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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
请登录后查看评论内容