質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Q&A

解決済

2回答

1883閲覧

シェルスクリプトの出力ログの整形をしたい

toshiki34

総合スコア1

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

0グッド

0クリップ

投稿2021/05/21 15:16

実現したいこと

シェルスクリプトを使用し、コマンドの実行結果を下記のように
一行に出力させたいです。

コマンド実行結果
(例)
1 : DISPLAY QLOCAL(*) CURDEPTH
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.CTL001.QUEUE) TYPE(QLOCAL) CURDEPTH(0)
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.DB001.QUEUE) TYPE(QLOCAL) CURDEPTH(0)
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.DB002.QUEUE) TYPE(QLOCAL) CURDEPTH(0)
~省略~

発生している問題

コマンド結果をそのまま出力すると下記のように
改行が入ってしまいます。

1 : DISPLAY QLOCAL(*) CURDEPTH
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.CTL001.QUEUE) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.DB001.QUEUE) TYPE(QLOCAL)
CURDEPTH(0)
AMQ8409: キューの内容を表示します。
QUEUE(M06QM1.DB002.QUEUE) TYPE(QLOCAL)
CURDEPTH(0)
~省略~

Perlなら整形ができるとわかり、試行錯誤していましたがうまくいきませんでした。
初めての質問なので、説明不足等あると思いますが、ご教示のほどよろしくお願いします。

補足情報

実行コマンド
echo "DISPLAY QLOCAL(*) CURDEPTH" |runmqsc M06QM1 >> ${RESULT_LOG}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2021/05/21 20:45

ちなみに stty size ってうつとなんと出ますかね?
toshiki34

2021/05/23 04:47

回答ありがとうございます。 「モード(size)はサポートされていません。」 と表示されました。
takasima20

2021/05/23 10:45

なるほどです。とりあえず(私は貢献してませんが)解決したようでよかったです。
guest

回答2

0

ベストアンサー

「CURDEPTH(0)という単語の後以外は改行を入れない」であれば、多分こんなかんじ。

何らかのコマンド | perl -CSD -ne '/CURDEPTH(0)/ or chomp; print'

投稿2021/05/21 18:27

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiki34

2021/05/23 04:51

回答ありがとうございます。 私の情報不足でCURDEPTHに0以外の値が入っている箇所があり、そこ以外はうまくいきました。 こちらのコマンドをもとに修正します。 ありがとうございました。
guest

0

条件が不明瞭ですが、「QUEUEで始まる行は、次の行と繋ぐ」であれば、

sh

1awk '/^QUEUE/{getline nxt;print $0 " " nxt;next}{print}'

ですね。

投稿2021/05/21 16:48

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toshiki34

2021/05/23 04:54

回答ありがとうございます。 条件が不明瞭で申し訳ありません。 echo "DISPLAY QLOCAL(*) CURDEPTH" | runmqsc M06QM1 | awk '/^QUEUE/{getline nxt;print $0 " " nxt;next}{print}' >> ${RESULT_LOG} で試してみましたが、 echo "DISPLAY QLOCAL(*) CURDEPTH" | runmqsc M06QM1 >> ${RESULT_LOG} と同じ出力結果になってしまいました。
otn

2021/05/23 05:38

前提が違うのであれば対応も異なります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問