2013-06-01 4 views
2

J'ai juste besoin d'aide et je voulais savoir si ce que je veux est possible. Voici mon fichier ressembleAfficher le résultat dans le groupe

 
COLUMN1 | COLUMN2 | COLUMN3 
-------------------------------------------- 
A=dog | B=354 | C=343 
A=cat | B=435 | B=334 
C=324 | A=cow | A=pig 

Parfois, je dois filtrer schéma similaire sur le champ spécifique et l'afficher sur mon écran. Exemple

grep -Po 'A=(\w+)' test.txt 

Ensuite, je vais me

 
A=dog 
A=cat 
A=bird 
A=cow 
A=pig 

Mais, ce que je voudrais demander est si possible d'afficher une autre colonne et montrer à côté de la première colonne, voici mon exemple pour préciser

 
A=dog  B=354 
A=cat  B=435 
A=bird B=334 
A=cow 
A=pig 

Ou parfois, je veux afficher 3 colonnes avec leur groupe respectif. Est-ce que c'est avec 'Grep' seul?

+1

no. Le travail de grep est de trouver des choses, pas de faire de jolis graphiques sur votre écran. –

+0

une suggestion? – Negx

+0

D'où vient l'oiseau? Et aussi, voulez-vous dire avoir la colonne suivante si 'A = ...' est dans la première colonne/rien si 'A = ...' est dans la 2ème ou 3ème rangée? – fedorqui

Répondre

0

veux juste partager ce que je faisais après quelques heures de recherche et n'a trouvé aucune solution facile:

$ grep -PO 'A = (\ w +)' test.txt> a.txt
$ grep -PO 'B = (\ d +)' test.txt> b.txt
$ pr -mtS a.txt b.txt

Ca y est :)

Vous pouvez également enregistrer ceci en .csv

$ pr -mts: a.txt b.txt> combine.csv
* Note: les deux points ":" est votre délimiteur.

+0

Notez que cela va scanner le fichier plusieurs fois. Si vous voulez le faire en un seul passage, regardez dans sed, ou écrivez un utilitaire dans un langage de script comme Perl. – BraveNewCurrency

Questions connexes