shell - 在 shell 脚本中组合多个命令
问题描述
在一个 shell 脚本中组合多个命令。
我必须编写一个脚本,该脚本将递归扫描多个文件夹并从多个文件中 grep 应用程序名称,并获取带有计数的应用程序名称列表。我可以使用多个(3)命令来执行此操作。只是检查是否有更好的方法来执行它或组合这些命令。
命令 1:这将递归扫描 dir 并从每个包含应用程序名称的文件中获取行。
grep --include=metadata.csv -rnw '.' -e "read :" > OUTPUT1.txt
输出看起来像这样(我正在寻找的应用程序名称是 MxMonitor_Marvel_PI49(第一行)和 alert_manager(第二行))
./subsearch_admin__admin_TXhNb25pdG9yX01hcnZlbF9QSTQ5__search14_1626351939.20757778_1626351940.4/metadata.csv:2:"read : [ admin ], write : [ admin ]",admin,"MxMonitor_Marvel_PI49",300 ./scheduler__nobody_YWxlcnRfbWFuYWdlcg__RMD5922da96313b0bb40_at_1626325500_98610/metadata.csv:2:"read : [ splunk -system-user ],写:[ splunk-system-user ]","splunk-system-user","alert_manager",86400 ./subsearch_admin__admin_TXhNb25pdG9yX01hcnZlbF9QSTQ5__search14_1626351939.20757778_1626351940.4/metadata.csv:2:"read] , 写: [管理员]",admin,"MxMonitor_Marvel_PI49",300
命令 2:这将从第一个命令的输出中提取 APP 名称
awk -F, '{gsub(/^"|"$/,"",$(NF-1));print $(NF-1)}' OUTPUT1.txt > OUTPUT2.txt
输出 MxMonitor_Marvel_PI49 alert_manager MxMonitor_Marvel_PI49
命令 3:获取每种应用类型的计数
awk '{mm=$1; cnt[$1 " " mm]++} END{for(a in cnt) print a " " cnt[a]}' OUTPUT2.txt > OUTPUT3.txt
这些命令工作正常。我正在检查我们是否可以组合这些命令。我尝试使用 xargs 但没有运气。
For ex. grep --include=metadata.csv -rnw '.' -e "read :" | xargs -t awk -F, '{gsub(/^"|"$/,"",$(NF-1));print $(NF-1)}'
谢谢
解决方案
推荐阅读
- bash - 编写一个在 gpu 中运行的 bash 脚本
- objective-c - iOS 耳机音量增大/减小的自定义操作
- amazon-web-services - AWS CloudFormation 脚本失败 - 不允许 Cognito 使用您的电子邮件身份
- javascript - 按属性对对象javascript数组进行排序
- python - Selenium Python - 单击图像链接出现错误:消息:元素不可见
- ios - Objective C 的 Swift 语法
- scala - Scala 任何一个 [type1, type2]
- java - Maven:如何使用指定开发人员特定配置的单独文件?
- angular - 如何在 Angular 5 中使用 morris.js 更改 xLable 格式(我想得到月份)
- python - 由于元组而无法打印 DIctionnary