簡體   English   中英

如何使用AWK根據字段打印不重復的行?

[英]How to print non duplicated rows based on a field with AWK?

我希望使用AWK根據第一個字段打印非重復行。 誰能幫忙嗎?

謝謝

    Input 

    1 28324 2077 2 1
    1 24682 2088 1 0
    1 25399 2074 1 0
    2 28925 1582 2 1
    3 30254 1450 1 0
    4 25552 1131 1 1
    4 31033 1134 1 0
    5 29230 1522 2 0


    Desired Output 
    2 28925 1582 2 1
    3 30254 1450 1 0
    5 29230 1522 2 0
awk '
(count[$1]++ < 1) { data[$1] = $0; }
END               { for (x in data) if (count[x] == 1) print data[x]; }
'

如果輸出應在第一列上sort -nk1 ,請通過sort -nk1其通過管道sort -nk1

如果您的數據已排序,則可以使用此方法,它不會累積潛在的大數組。

awk '
    $1 != prev { if (count == 1) print line; count = 0 }
               { prev=$1; line = $0; ++count }
           END { if (count == 1) print }' inputfile

對於第一列和支持-w選項的uniq實現中固定數量的字符:

sort infile|uniq -uw1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM