J'ai un fichier texte dans lequel des milliers de données sont là. par exemple.
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
. . .
. . .
. . .
Je veux extraire toutes les name
et email
de ce fichier. par exemple.
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
REMARQUE: notez la nouvelle ligne après chaque paire name
et email
.
Je sais que cela sera fait dans certaines commandes linux telles que grep
, sed
, awk
etc.
Essaye ça
grep "name\|email" <Path to your File>
Pour garder la conscience pure, voici une version 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
Et celui-ci, ajoutera les points:
awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
Sortie:
$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
. . .
. . .
. . .
Une version beaucoup plus simple de la première version:
awk '/^name/; /^email/ {$3="\n"; print}' testerfile.txt
Les expressions rationnelles ancrées empêcheront de trouver les mots "nom" et "email" ailleurs dans le texte, et uniquement au début d'une ligne.