まあ、私はsed
とgrep
を十分に管理して、2行または3行の出力を処理できるような解決策を得ることができました。この状況に固有の非常にですが、概念は同様のシナリオに適用できます。つまり、私はdisplayコマンドの出力フォーマットに影響を与える方法を見つけられませんでしたが、それを処理する方法が見つかりました。
次のQShellコマンド(STRQSH
で実行)は、キュー、現在の深さ、最大深さのCSVを表示します。次に、CPYFRMIMPFを使用してこれをDB2ファイルに移動して処理します。
CHGVAR VAR(&QSH) VALUE('+
echo "dis qlocal(*) curdepth maxdepth"
| /QSYS.LIB/QMQM.LIB/RUNMQSC.PGM ''' |< &QMGR |< ''' +
| grep ''[A-Z]\{4,8\}('' +
| sed -e ''/QUEUE([-A-Za-z0-9._\/]*)$/{N;s/\n//;}'' +
-e ''/TYPE([-A-Za-z0-9._\/]*)$/{N;s/\n//;}'' +
-e ''/CURDEPTH([0-9]*)$/{N;s/\n//;}'' +
-e ''s/^\ \ *//'' +
-e ''s/\ \ */,/g'' +
-e ''s/QUEUE[(]\([-A-Za-z0-9._\/]*\)[)]/"\1"/'' +
-e ''s/TYPE[(][-A-Za-z0-9._\/]*[)],//'' +
-e ''s/CURDEPTH[(]\([0-9]*\)[)]/\1/'' +
-e ''s/MAXDEPTH[(]\([0-9]*\)[)]/\1/'' +
| grep -v ''SYSTEM.'' +
> /tmp/mqqueuests.csv+
')
それは、英数字と. - _ /
文字でキュー名が可能になります。
可変数の問題の根本的な解決策は、MAXDEPTH()
で終わらない行を見つけ出し、N
コマンドで後続の改行を取り除くことです。sed
で実行します。これにより、ファイルの次の行がパターン・バッファにプルされ、改行が取り除かれます。
フォーマットしない場合は、1つの長い行を使用します。あるいは、コードを書いてPCFコマンドを使うのが良いでしょう。 – Roger
それは私の質問です - 私はそれが1つの長い行に各エントリを出力するように強制することはできますか?私はそのための明白な選択肢を見ない。常に1行に最大2つのエントリがあります。 – zkarj
どのバージョンのIBM MQですか? – JoshMc