打印Uniqe系列

时间:2016-08-31 08:15:08

标签: bash awk

我有以下日志文​​件,我只需要在此日志中打印唯一的文件。

 3185 ms: server-session 192.168.32.9 /db/data/transaction/commit
 1778 ms: server-session 192.168.32.9 /db/data/transaction/commit
 1770 ms: server-session 192.168.32.9 /db/data/transaction/commit
 1731 ms: server-session 192.168.32.9 /db/data/transaction/commit
 1730 ms: server-session 192.168.32.9 /db/data/transaction/commit
 1729 ms: server-session 192.168.32.9 /db/data/transaction/commit

例如:从这个日志开始,我只需要打印下面的行,这需要更多的时间来执行。

 3185 ms: server-session 192.168.32.9 /db/data/transaction/commit 

我真的很感激,如果有人能建议我这个解决方案

4 个答案:

答案 0 :(得分:2)

试试这个 -

sort -nk 1  file.txt | tail -1

根据第一列进行排序并选取最后一行(这是最有时间的一行)。

答案 1 :(得分:1)

使用awk使用sortuniq这样的简单解决方案似乎是过度杀戮。

awk -v max=0 '{if($1>max){line=$0; max=$1}}END{print line}' file
3185 ms: server-session 192.168.32.9 /db/data/transaction/commit

答案 2 :(得分:0)

尝试uniq -s选项:

uniq -s 5 file

答案 3 :(得分:0)

如果要为每个ip打印具有最高第一个字段的记录(ms之前的数字),请使用:

$ awk 'a[$4]<$1 {a[$4]=$1;b[$4]=$0} END{for(i in a) print b[i]}' test
2115 ms: server-session 192.168.33.9 /db/data/transaction/commit
3185 ms: server-session 192.168.32.9 /db/data/transaction/commit
3145 ms: server-session 192.168.32.10 /db/data/transaction/commit

说明:

a[$4]<$1 {         # if the new first field value is more than previous 
    a[$4]=$1       # store the first field
    b[$4]=$0       # store the whole record with the highest first field
} 
END {              # in the end
    for(i in a)    # go thru every stored value
        print b[i] # and print them
}

我用test

$ cat > test
3185 ms: server-session 192.168.32.9 /db/data/transaction/commit
1778 ms: server-session 192.168.32.9 /db/data/transaction/commit
1770 ms: server-session 192.168.32.9 /db/data/transaction/commit
1731 ms: server-session 192.168.32.9 /db/data/transaction/commit
1730 ms: server-session 192.168.32.9 /db/data/transaction/commit
1729 ms: server-session 192.168.32.9 /db/data/transaction/commit
3185 ms: server-session 192.168.32.9 /db/data/transaction/commit
3145 ms: server-session 192.168.32.10 /db/data/transaction/commit
2115 ms: server-session 192.168.33.9 /db/data/transaction/commit