gpt4 book ai didi

linux - 仅使用 awk 或其他文件处理实用程序处理文件的 UNIX(AIX) 脚本

转载 作者:IT王子 更新时间:2023-10-29 01:18:08 25 4
gpt4 key购买 nike

我的任务是编写一个脚本,该脚本将过滤来自 MQ runmqsc 命令的输入并将输出重定向到另一个文件。我一直在使用许多其他 Linux 命令一起使用管道,它似乎在 Linux 中工作得很好,但我的经理需要在 AIX 系统上运行脚本,所以 UNIX 操作系统。我意识到许多在 Linux 上运行良好或在 Linux 上完成工作的命令将在 UNIX 或基于 UNIX 的系统上产生完全不同的输出。runmqsc 命令的输出如下所示:

5724-H72 (C) Copyright IBM Corp. 1994, 2009.  ALL RIGHTS RESERVED.
Starting MQSC for queue manager CNUMQ02B.


1 : DISPLAY QLOCAL(*) CURDEPTH
AMQ8409: Display Queue details.
QUEUE(ADEXA.AOM.REPLY.MR.QL) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: Display Queue details.
QUEUE(ADEXA.AOM.REPLY.QL) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: Display Queue details.
QUEUE(ADEXA.ERROR.QL) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: Display Queue details.
QUEUE(ADEXA.FACT.OUT.QL) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: Display Queue details.
QUEUE(ADW.REMAN.XREF.ERR.QL) TYPE(QLOCAL)
CURDEPTH(14)
AMQ8409: Display Queue details.
QUEUE(SAPNA.MESS.CRITICAL.CLASS.RESUME.QL)
TYPE(QLOCAL) CURDEPTH(123)
One MQSC command read.
No commands have a syntax error.
All valid MQSC commands were processed.

我基本上需要做的只是在同一行显示队列名称、一个空格,然后是队列深度,没有尾随空格,文件开头或结尾没有换行符,这样它将类似于以空格作为分隔符的 csv 文件。我还需要过滤掉队列深度等于 0 的队列,因此输出将如下所示:

ADW.REMAN.XREF.ERR.QL 14

正如我所说,我在 Linux 上尝试了很多命令,但我不知道哪些命令和标志在 UNIX 和 Linux 上实际上或多或少地工作相同,我的经理今天想要这个,所以如果有机会你阅读本文,我要求您至少指导我使用什么来尝试解决这个问题 :) 谢谢。

这是我在 Linux 中写的:

head -n -3 "$1" | 
tail -n +6 |
sed '/AMQ8409: Display Queue details./d' |
sed 's/TYPE(QLOCAL)//g' |
tr -d ' \t\r\f' |
awk 'NR%2{printf "%s ",$0;next;}1' |
sed '/CURDEPTH(0)/d' |
awk '{gsub(/QUEUE(/, ""); gsub(/CURDEPTH(/, ""); gsub(/)/, ""); print}' |
sort -nk2

最佳答案

试试这个更简单的命令..

sed -n -e 's/.*QUEUE(\([^)]*\)).*/\1/p' -e 's/.*CURDEPTH(\([0-9]*\)).*/\1/p' \
| paste -d ' ' - - \
| grep -v ' 0$'

关于linux - 仅使用 awk 或其他文件处理实用程序处理文件的 UNIX(AIX) 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41800496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com