2017-06-19 4 views
0

私は以下の入力ファイルを持っていますが、他のカラムとは関係なく、最後のカラムが現れていることを知る必要があります。Uniq -cはbashスクリプトの最後の2つのカラムに基づいています

私はこのコードを試みたが、

cat filename.txt | sort -t'|' -k3,4 | uniq -c -f1 


入力
09-06-17働いていない

| 19:14:05.862を| 61284017123 | 505023892353450
09-06-17 | 19:29:48.409 | 61284017123 | 505023892353457
09-06-17 | 19:30:05.648 | 61284017123 | 505023892353457
09-06-17 | 19:44:46.0​​85 | 61284017123 | 505023892353457
09-06-17 | 04:23:03.038 | 61284017941 | 505023892353450
09-06-17 | 04:30:50.691 | 61284017942 | 505023892353451
09-06-17 | 04:43:48.407 | 61284017942 | 505023892353451
09-06-17 | 04:27:50.293 | 61284017944 | 505023892353453
09-06-17 | 03:51:24.130 | 61284017949 | 505023892353458
09-06-17 | 04:06:45.220 | 61284017949 | 505023892353458


を出力
発生なしのラインのいずれか期待します
09-06-17 | 19:14:05.862 | 61284017123 | 505023892353450 |
09-06-17 2 | 19:29:48.409 | 61284017123 | 505023892353457 | 3
09-06-17 | 04:30 :50.691 | 61284017942 | 505023892353451 | 2
09-06-17 | 04:27:50.293 | 61284017944 | 505023892353453 | 1
09-06-17 | 03:51:24.130 | 61284017949 | 505023892353458 | 2

答えて

0

これは私のために働いた:)
awk -F'|' '!z[$4]++{ a[$4]=$0; } END {for (i in a) print a[i]"|" z[i]}' filename

+0

あなたはその後、ソートされた入力を必要としないawkの中で何かをやってawkの前にソートして、ランダムな順序でのawkから出力している(これは 'にin')。意味がありません。 –

1

試用:

-u for unique 

cat filename.txt | sort -t'|' -k3,4 -u 
1

この二解析ソリューションは、ここで働く、すなわち最初のカウントの発生してからのカウントでユニークな行を印刷:

parse.awk

BEGIN { FS = OFS = "|" } 

FNR==NR { 
    h[$NF]++ 
    next 
} 

$NF in h { 
    print $0 OFS h[$NF] 
    delete h[$NF] 
} 

このようなファイル名を指定して実行して:

awk -f parse.awk input{,} 

出力:

09-06-17|19:14:05.862|61284017123|505023892353450|2 
09-06-17|19:29:48.409|61284017123|505023892353457|3 
09-06-17|04:30:50.691|61284017942|505023892353451|2 
09-06-17|04:27:50.293|61284017944|505023892353453|1 
09-06-17|03:51:24.130|61284017949|505023892353458|2 
関連する問題