Не удалось найти сотрудника со второй по величине зарплатой в отделе «администратор» (с учетом регистра), используя awk

#linux

#linux

Вопрос:

Я намерен найти сотрудника со второй по величине зарплатой из всех сотрудников отдела «администратор» (с учетом регистра). Отобразите имя сотрудника с указанием его / ее отдела. Если записей недостаточно, отобразите соответствующее сообщение.

 sort -k4nr unix.txt | grep -e 'admin' | awk '{ if ((NR >= 2) amp;amp; (FNR == 2)) {print $1,$2} else if (NR < 2) {print "No Sufficient Records in the file"}}'


Getting output like this:
No Sufficient Records in the file
Harry Manager

The contents of unix.txt file is as follows
Name Designation Department Salary
Sheetal Clerk Admin 12000
tarun peon sales 15000
Rahul HR aCCounts 20000
Deepak Clerk admin 23000
Ajay manager Admin 45000
amit manager ACCOUNTS 47000
varun manager sales 50000
satvik director purchase 80000
Raju Engineer admin 40000
Harry Manager admin 35000
  

Ответ №1:

вы были близки к этому, но я думаю, вам это не нужно, grep поскольку вы можете «сказать» awk выполнить следующее действие, только если третье поле «admin», поэтому мы можем использовать переменную n для хранения количества проверенных записей «admin» (числовые переменные в awk по умолчанию равны 0), если текущее значение равно 2, распечатайте запись и выйдите. в END если число по-прежнему меньше 2, выведите сообщение:

 $ sort -k4nr unix.txt | awk '$3 == "admin" { n  ; if (n == 2) { print $0; exit; } } END { if (n < 2) print "No Sufficient Records in the file" }'
Harry Manager admin 35000
$
  

вот пример без допустимых записей:

 $ printf "foonbarnbaz" | sort -k4nr | awk '$3 == "admin" { n  ; if (n == 2) { print $0; exit; } } END { if (n < 2) print "No Sufficient Records in the file" }'
No Sufficient Records in the file
$
  

и пример только с одной записью «admin»:

 $ cat unix.txt
Name Designation Department Salary
Sheetal Clerk Admin 12000
tarun peon sales 15000
Rahul HR aCCounts 20000
Deepak Clerk admin 23000
Ajay manager Admin 45000
amit manager ACCOUNTS 47000
varun manager sales 50000
satvik director purchase 80000
$ sort -k4nr unix.txt | awk '$3 == "admin" { n  ; if (n == 2) { print $0; exit; } } END { if (n < 2) print "No Sufficient Records in the file" }'
No Sufficient Records in the file
$