bash - 将一条长线作为多条线进行管道传输

标签 bash shell scripting awk zsh

假设我有一堆不包含换行符的 XML 文件,但基本上包含一长串记录,由 </record><record> 分隔

如果分隔符是</record>\n<record>我可以做类似 cat *.xml | grep xyz | wc -l 的事情计算感兴趣的记录实例,因为 cat 会每行发出一个记录。

有没有办法写SOMETHING *.xml | grep xyz | wc -l其中 SOMETHING可以每行流出一条记录吗?我尝试使用 awk为此,但找不到避免将整个文件流式传输到内存中的方法。

希望问题足够清楚:)

最佳答案

这有点难看,但它有效:

sed 's|</record>|</record>\
|g' *.xml | grep xyz | wc -l

(是的,我知道我可以让它更短一点,但前提是要以清晰为代价。)

关于bash - 将一条长线作为多条线进行管道传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557713/

相关文章:

linux - 将带有单引号和双引号的参数传递给 shell 脚本

vim - 在 Vim 插入模式下,有没有办法添加文件路径自动补全?

mysql - 通过bash获取MYSQL数据库信息

java - 从 JavaScript 实现 Java 接口(interface)失败并出现 TypeError

bash - 如何创建一个新的终端 session 并执行多个命令

python - Makefile:如果存在则使用 $exe1 否则使用 $exe2

node.js - 在bash openssl中创建一个base64 md5哈希值,相当于在node.js中创建一个base64 md5哈希值

apache - SSL脚本问题

linux - 如何在 linux 中捕获 "sort -c"的输出

bash - 从 bash 脚本更改 xterm 的标题