2016-10-21 26 views
0

我正在嘗試查找特定電子郵件ID重複的次數。與輸出管道uniq -c我得到420 aol.com但我需要aol.com 420怎麼我這樣做是因爲uniq -c適用作爲前綴數在bash上顛倒uniq命令

+0

添加一個帶有電子郵件和預期輸出的示例輸入......您的問題沒有足夠的細節來提供解決方案..另請參閱https://stackoverflow.com/help/mcve – Sundeep

+0

@Sundeep輸入是[email protected]和當前輸出:1 aol.com;意思是找到1個aol.com郵箱;我需要的輸出是:aol.com 1 – anush95

+0

哦好吧,這很容易做,你已經有了一個答案:)看看[當有人回答我的問題,我該怎麼辦?](https://stackoverflow.com /幫助/人,答案) – Sundeep

回答

2

可以通過管道輸出到awk

string='420 aol.com' 
echo "$string" | awk '{print $2,$1}' 

aol.com 420 

默認情況下,awk每場分離由空格。

  • 420是第一場$1

  • aol.com是第二場$2

這只是告訴awk打印每個這些領域以相反的順序。 {print $2,$1}

+0

是否即使它是一個列表這項工作 420 aol.com 123 yahoo.com 11 gmail.com 將這個給 aol.com 420 yahoo.com 123 gmail.com 11 – anush95

+2

當然會。 'uniq'的輸出將以新行顯示每個結果集。 'awk'只會交換此輸出的第1列和第2列。 – Utsav

0

如果你有電子郵件地址,如列表:

$ cat emails.txt 
[email protected] 
[email protected] 
[email protected] 

,你需要他們的域的數量,用awk:

$ awk [email protected] '{a[$2]++} END {for(i in a) print i, a[i]}' emails.txt 
aol.com 2 
yahoo.com 1 

的記錄沒有特定的順序outputed 。如果使用Gnu awk,則可以在BEGIN塊的開頭使用PROCINFO["sorted_in"]="@val_num_asc";(參見here選項)對記錄進行排序。