Analisando string por awk e obtendo apenas elementos sem pipes ou semicolons

2

Eu gostaria de obter essa linha de string

AUGUSTYN|Stanisław|3589238

sem | e :

Eu tentei algo assim:

cat baza|grep "AUGUSTYN" -n|awk -F '|' '{print $1,$2,$3,$4}''

( baza é meu arquivo com texto e AUGUSTYN é o nome da pessoa)

O resultado deste comando é:

1:AUGUSTYN Stanisław 3589238 

Como você vê lá ainda esta tubulação :( E eu gostaria de obter isso:

1 AUGUSTYN Stanisław 3589238

Eu pego o texto deste arquivo base:

AUGUSTYN|Stanisław|3589238
BARAN|Stanisław|3511477
BUCZEK|Marek|3511526
CABAJ|Wanda|3511483
CEPAK|Józef|3511067

Obter strings sem | e : seria ótimo, mas terei que obter o número de linhas em que esse texto está armazenado. Então eu tive que usar o grep. Se você puder encontrar qualquer outra solução mais óbvia para isso também seria mega-excelente.

Como posso arquivar isso? Eu comecei a aprender uma hora atrás este awk. Por favor ajude.

    
por deadfish 27.01.2013 / 17:08

2 respostas

2

grep não é necessário, você pode fazer isso com awk sozinho:

awk 'BEGIN{FS="|"} $1 == "AUGUSTYN" { print NR " " $1 " " $2 " " $3}'
    
por 27.01.2013 / 17:36
0

Que tal adicionar | sed "s/:/ /" no final do seu comando? então é assim

cat baza|grep "AUGUSTYN" -n|awk -F '|' '{print $1,$2,$3,$4}' | sed "s/:/ /"

A menos que eu esteja entendendo mal e você queira fazer isso em um comando.

    
por 27.01.2013 / 17:37

Tags