如何使用 awk、grep 和/或 powershell 过滤多行

沃利坦克

我的情况是我有一个文件,其内容看起来像这样但更长。https://pastebin.com/q33wFdAX

我需要删除每次出现

        <category>Games</category>
</game>

如果类别中有数据,我们不想删除它。所以基本上,如果我可以像 grep -v 一样精确匹配这个双行并反转,那么我可以输出到一个没有这些行的新文件。

我将拥有的不仅仅是这个类别,所以我需要能够使用几个 or 语句。我在记事本++中使用的正则表达式示例手动完成此操作

(^\s+<category>Games</category>\s+</game>$|^\s+<category>Applications</category>\s+</game>$)

如果您也可以在 powershell 中为我提供一种简单的方法来执行此操作,则可以加分,我希望能够在任一操作系统上执行此操作。我不太擅长高级正则表达式、awk 等。

库萨拉南达

由于原来的文件,下面将删除不提及所有冠军(USA)的称号的rom节点的name属性:

xmlstarlet ed -d '//game[not(contains(rom/@name, "(USA)"))]' file-orig.xml >file-new.xml

XPath 表达式//game[not(contains(rom/@name, "(USA)"))]选择game具有至少一个rom子节点的所有节点,该子节点的name属性包含字符串(USA)选择这些进行删除。

使用命令行上的重定向将输出写入新文件。

看了一会儿 XML 数据后,我注意到不是查看rom节点,而是查看主game节点的name属性似乎就足够了

xmlstarlet ed -d '//game[not(contains(@name, "(USA)"))]' file-orig.xml >file-new.xml

这将删除所有不包含(USA)节点name属性中的游戏game

删除所有非(USA)标题后,我下载的文件将包含 1979 个标题。

要额外过滤掉所有非Games类别:

xmlstarlet ed \
    -d '//game[not(contains(@name, "(USA)"))]' \
    -d '//game[category != "Games"]' file-orig.xml >file-new.xml

剩下 1474 个游戏。

只是为了好玩,按总大小对游戏标题进行排序

xmlstarlet ed \
    -d '//game[not(contains(@name, "(USA)"))]' \
    -d '//game[category != "Games"]' file-orig.xml |
xmlstarlet sel -t -m '//game' \
    -v 'sum(rom/@size)' -o ' ' -v '@name' -nl | sort -n

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Grep和AWK使用

来自分类Dev

如何通过awk和grep“过滤”尾部输出?

来自分类Dev

elasticsearch - 如何按多行聚合和过滤

来自分类Dev

使用awk或grep过滤lsblk命令

来自分类Dev

一起使用grep和awk

来自分类Dev

如何使用awk执行多行匹配和替换?

来自分类Dev

如何使用awk连接和求和文件中的多行

来自分类Dev

使用 Regex 和 Powershell 返回文件的多行

来自分类Dev

如何在别名中的管道内转义grep和awk?

来自分类Dev

在Linux中使用grep和AWK命令获取文件列表

来自分类Dev

使用grep和awk从日志文件中提取特定行

来自分类Dev

如何在Powershell中对行进行过滤和计数?

来自分类Dev

使用powershell过滤和删除excel中的行

来自分类Dev

如何在300GB .txt文件上使用awk和grep?

来自分类Dev

如何使用awk和grep将命令的输出解析为列

来自分类Dev

如何使用grep和/或awk在文件中选择多个路径名并删除这些文件?

来自分类Dev

不能弄清楚在引用数字时如何使用grep和awk对数字求和

来自分类Dev

如何使用PowerShell按名称文件和其他扩展名文件过滤文件?

来自分类Dev

如何使用 sed/awk/grep

来自分类Dev

如何使用Powershell删除文件中的多行?

来自分类Dev

如何在bash中编辑多行图案(可使用sed和awk)

来自分类Dev

使用awk匹配和求和多行文件

来自分类Dev

正则表达式使用python从文件中过滤和删除特定的多行文本

来自分类Dev

使用grep vs awk

来自分类Dev

使用grep或awk

来自分类Dev

具有正负过滤的多行grep

来自分类Dev

使用grep过滤后如何忽略行首和行的一部分

来自分类Dev

在R中使用grep和子集的多重过滤

来自分类Dev

在R中使用grep和子集的多重过滤

Related 相关文章

热门标签

归档