Um comando shell de linha que localiza todos os alunos no LEC05 e imprime seu primeiro nome em ordem de classificação

0

Por exemplo, suponha que tenhamos um arquivo chamado input.txt , que contém

100 John Doe LEC05 12356

132 Carol Bon LEC05 156

122 Cavar Liktik LEC01 136

...

Este comando deve encontrar todos em LEC05 e imprimir seus primeiros nomes na ordem sorted em um arquivo chamado output.txt

O comando deve ser um comando de uma linha (com pipes).

Não sei como isso seria feito.

see if LEC05 | find first name at index 1 | sort < input.txt > output.txt

Como faço o see if LEC05 | find first name at index 1 parte?

    
por K Split X 14.06.2017 / 17:32

2 respostas

2

com awk :

awk '$4 == "LEC05" { print $2 }' /path/to/inputfile | sort > outputfile

Com grep e cut :

grep 'LEC05' /path/to/inputfile | cut -f2 | sort > outputfile
    
por 14.06.2017 / 17:47
1

Mais awk-ness

     awk '/LEC05/{ name[$2]++ } END { n = asorti( name,sname ); for ( i in sname ) print sname[i]}' input.txt
    
por 14.06.2017 / 18:20