我有以下数据:
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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)