Preciso de um comando (de preferência usando awk
) que liste o número exclusivo da lista e os nomes de todos os alunos cujos nomes começam A
e terminam com k
na lista a seguir:
001 Abhishek Physics 90
002 Rohan Maths 100
003 simashree Chemistry 89
002 Rohan Language 80
005 Vamsi Computers 99
001 Abhishek Maths 95
006 Surjya Computers 93
Responder1
Como você solicitou especificamente uma solução usando awk
, assumindo que o número e o nome do rolo são o primeiro e o segundo campos, você pode usar
awk '$2 ~ /^A[[:alpha:]]*k$/ {print $1,$2}' yourfile
Se você precisar de registros exclusivos, a maneira mais fácil é canalizar os resultados por meio do sort -u
comando
awk '$2 ~ /^[[:alpha:]]*k$/ {print $1,$2}' yourfile | sort -u
Talvez seja mais correto usarâncoras de palavrasem vez deâncoras de linha^, $ na expressão regular, ou seja
awk '$2 ~ /\<[[:alpha:]]*k\>/ {print $1,$2}' ...
Ambos parecem funcionar neste contexto (possivelmente porque o campo já está separado por espaços em branco).
Responder2
Supondo que você tenha esses registros em um arquivo chamado data_file.txt
, você pode usar:
grep "A[a-z]*k" data_file.txt
Se você deseja remover a primeira coluna de números, use:
grep "A[a-z]*k" test | cut -d" " -f 2-
Se você deseja remover a última coluna de números, use:
grep "A[a-z]*k" test | cut -d" " -f -3