web-development-kb-pt.site

grep - removendo o texto após o token delimitador

Tenho um arquivo no qual preciso eliminar tudo após o primeiro ; em todas as linhas.

Então, um arquivo como este:

sdfsdsdf;
fsdfsddf;sdfsd;

Resultará nisso:

sdfsdsdf
fsdfsddf

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

12
garbagecollector

sed é provavelmente mais fácil e rápido do que awk ou Perl nesta circunstância:

sed 's/^\([^;][^;]*\);.*$/\1/' some_file_name
5
Bruce Ediger

outra opção é usar o comando cut

cat a.file | cut -d';' -f1
7
Richm

Eu normalmente uso awk para coisas como esta:

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

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

3
Marco Ceppi

Esta é uma maneira de fazer isso usando GNU grep:

grep -Po "^[^;]+(?=;?)" filename
2