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

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

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

3011閲覧

grep結果の条件分岐処理について

nikori

総合スコア19

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2016/10/14 03:13

bashで、
"grep Iteration LOGFILE"
とすると以下のような出力をするログファイルを簡単に確認するaliasかfunctionを作成したいのですが、良い方法が思いつかないので質問させてください。

Iteration 1( 1) Iteration 1( 2) ... Iteration 1( 200) Iteration 2( 1) ... Iteration 2( 58) Iteration 3( 1) ...

このログの1つ目の数値についてそれぞれ、()内の数字が最大の物を出力したいです。
つまり

Iteration 1( 200) Iteration 2( 58) Iteration 3( 146) ...

というような結果が確認できると嬉しいのですが、grep結果を条件分岐させる方法がわからず苦戦しています。

初心者質問で恐縮ですが、お知恵をお貸しいただけると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

awkを使えばできると思いますよ

grep Iteration LOGFILE | sed 's/[()]/ /g' | awk '{ max[$2] = !($2 in max) ? $3 : ($3 > max[$2]) ? $3 : max[$2]} END { for (i in max) print i, max[i]}'

※trで()を空白に変えたあと、awkで空白ごとに分割して、Iterationの数字ごとに最大値を集計して、最後に出力してます

投稿2016/10/14 03:27

編集2016/10/14 03:30
popobot

総合スコア6586

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

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

nikori

2016/10/14 04:58

お早い回答ありがとうございました! awkの構文についてよく勉強してみます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問