grep - removendo texto após o token delimitador

11

Eu tenho um arquivo no qual preciso eliminar tudo depois do primeiro ; em cada linha.

Então, um arquivo como este:

sdfsdsdf;
fsdfsddf;sdfsd;

Isso resultará em:

sdfsdsdf
fsdfsddf

Eu olhei para grep e sed . Eu apreciaria uma resposta incorporando qualquer um desses comandos.

    
por garbagecollector 23.08.2010 / 19:07

4 respostas

5

sed é provavelmente mais fácil e mais rápido que awk ou perl nessa circunstância:

sed 's/^\([^;][^;]*\);.*$//' some_file_name
    
por 23.08.2010 / 19:29
7

outra opção é usar o comando cut

cat a.file | cut -d';' -f1
    
por 23.08.2010 / 19:45
3

Eu geralmente uso awk para coisas como esta:

cat a.file | awk -F=";" '{ print $1 }'

Isso levará cada linha de um arquivo e imprimirá o primeiro grupo antes do delimitador -F

    
por 23.08.2010 / 19:15
2

Aqui está uma maneira de fazer isso usando o GNU grep :

grep -Po "^[^;]+(?=;?)" filename
    
por 24.08.2010 / 04:19