imprimir várias palavras separadas por espaço

1

Eu tenho um arquivo de texto e os dados dentro dele têm formato como (nome da idade do país):

michael jordans 25 US
adam smith 30 UK
chris wood ABC 22 Aus

se eu usar o comando: cat text.txt | awk {'print $1'} - > imprimirá:

michael
adam
chris

mas quero imprimir o nome completo:

michael jordans
adam smith
chris wood ABC

Qual comando devo usar?

Podemos alterar os dados de formato como:

michael jordans|25|US
adam smith|30|UK
chris wood ABC|22|Aus
    
por user175124 15.06.2016 / 05:31

2 respostas

1

sed 's/^\([^0-9]*\).*//' text.tex

Isso pressupõe que o nome não contenha um caractere numérico e o campo logo após o nome começar com um número.

Quando você separa os campos por | , isso pode ser feito por

sed 's/^\([^|]*\).*//' text.tex

ou se você gosta do awk, você pode fazer

awk -F\| '{print $1}' text.tex
    
por 15.06.2016 / 05:43
0

Se você alterar o arquivo para ter separadores de campo apropriados, como | , a solução será trivial:

awk -F'|' '{print $1}' input_file

Se você usar espaços em branco, que também ocorrem dentro dos campos pretendidos, em vez de separadores de campo apropriados, você poderá fazer algo assim:

 awk '{ a = $1; for (i=2; i <= NF-2; i++) a = a " " $i; print a; }' input_file
    
por 15.06.2016 / 07:51