用awk

2017-03-03 26 views
1

我有一個文件如下用awk

1 rob hr 10000 
2 charls it 20000 
4 kk Fin 30000 
5 km it 30000 
6 kl it 30000 
7 mark hr 10000 
8 kc it 30000 
9 dc fin 40000 
10 mn hr 40000 
3 abi it 20000 

其中4rth列包含在列2.我想所有第二高的薪水記錄的個人的工資尋找第二高的工資(或第n最高工資待遇一般)。 輸出示例:

4 kk Fin 30000 
5 km it 30000 
8 kc it 30000 
6 kl it 30000 

我已經試過這樣:

sort -k4,4 employee.txt | awk 'NR==1{a=$4;next}{if($4>a){print $0 ;exit} else next;}' | a=`awk '{ print $4}'` | awk -v b=$a '$4==b' < cat employee.txt 

但這不給予任何輸出。有什麼聰明的建議嗎?

回答

5

awk來救援!

sort -k4nr file | 
awk '!($4 in a){c++; a[$4]} c==2' 

4  kk  Fin  30000 
5  km  it  30000 
6  kl  it  30000 
8  kc  it  30000 
+1

乾淨簡潔!應該是正確的做法! '++' – Inian

+0

謝謝卡拉克法 – Vicky