Tente isso
grep "name\|email" <Path to your File>
Eu tenho um arquivo de texto no qual milhares de dados estão lá. por exemplo.
id=row_value
profile=row_value
name=row_value
email=row_value
address=row_value
id=row_value2
profile=row_value2
name=row_value2
email=row_value2
address=row_value2
. . .
. . .
. . .
Desejo extrair todos os name
e email
desse arquivo. por exemplo.
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
NOTA: Observe a nova linha após cada name
e email
pares.
Eu sei que isso será feito em alguns comandos do Linux como grep
, sed
, awk
etc.
Eu sou Noob em comandos linux e por favor me ajude com relação a isso ..
Tente isso
grep "name\|email" <Path to your File>
Para manter a consciência limpa, aqui está uma versão awk
:
$ awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
E este, vai acrescentar os pontos:
awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
Saída:
$awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
Uma versão muito mais simples da primeira versão:
awk '/^name/; /^email/ {$3="\n"; print}' testerfile.txt
A regex ancorada impedirá a localização de palavras "nome" e "email" em outras partes do texto e apenas no início de uma linha