2016-09-11 8 views
-3

タイトルには、列3の各特定の値に対して列1の最高値を探したいとします。次に列を印刷したいip-addressを持つ行は2、エラーコードは3列目です。Bourneシェルスクリプト、列3の特定の値に対して列1の最高値を見つける

マイコード:

cat $NAME |awk '{print $1, $9}' | sort -k 1 -k 2 | uniq -c | sort -k 3 

Part of output

は、我々は変数「NAME」に入れてログファイルを開いていると、ログファイルに9つの以上の列があることを言及するのを忘れた9。サーバーのレスポンスコードを確認します。

127.0.0.1 - stefan [01/Apr/2002:12:17:10 +0200] "GET/HTTP/1.1" 200 301 "" "" Mozilla/5.0(Konqueror/2.2.2-2、Linux) "

+1

フィールドデリミタがデフォルトの場合、* index *、* IP Address *、*サーバー応答コード*から9(9 $)などの値を取得しますか? (あなたの出力に入力が反映されている場合、最大値は '3 'になります) –

+0

変数' NAME 'に入れたログファイルを開き、ログファイルには9個以上の列があります。 – Popp

答えて

0

(私は$9の存在を理解していない)、私はあなたがしたいと思う問題のあなたの説明とは全く関係のないと思われるコードスニペット、無視:

sort -s -k3,3 -k1,1r $NAME | awk '$3 != l{print $2, $3; l=$3}' 

を3列で特定の値のすべてが表示されますグループ間で2次キー(-k1,1r)は、最初に表示される列1の最高値を持つ各グループをソートします。 awkは、新しい値が3番目の列に現れるたびに2番目と3番目の列を出力することによって、各グループの最初の行だけを表示します。

+0

私が入れたコードは、画像の出力を取得するものですが、最初に開いたログファイルがあるのを忘れていました$ 9はログファイルのサーバー応答コードに反映されています – Popp

+0

あなたのpre-処理は意味がありません.2列しか生成しないので、どのようにして3列目についての質問をすることができますか? –

+0

私のコードを追加してうまくいけば、変更したのはsort -sから-gです。助けを求めて! – Popp

関連する問題