Menu

Simplifier commande sed [Résolu/Fermé]

- - Dernière réponse :  flow825 - 19 janv. 2018 à 13:45
Bonjour,

Je cherche à simplifier la commande suivante :

sed 's/\[0m/\n/g' fichierentrer | sed -n '/User/p' | sed -r 's/.*(User.*)/\1/' | sort -u | sed -r 's/\[0m//' > fichiersortie


Mon objectif serait de retirer un maximum de sed, en utilisant le paramétre "-e" mais je ne sais pas ci cela est possible car j'utilise d'autre paramétres (-n et -r).

Avez-vous une idée de coment réaliser cela?

Merci
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
23 mai 2019
117
1
Merci
Re_

$ egrep -o 'User([^[]|$)*' fich
User introuvable : titi
User introuvable : toto
User introuvable : toto

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 38989 internautes nous ont dit merci ce mois-ci

Merci ça fait exactement se que je voulais.
Messages postés
1189
Date d'inscription
lundi 2 mai 2016
Statut
Membre
Dernière intervention
23 mai 2019
117
0
Merci
Salut,

Peut-on voir ce que fait exactement cette suite de commandes ?

0
Merci
salut,

a priori, le deuxième et le dernier
sed
ne servent à rien.
le deuxième devrait pouvoir être "fondu" dans le suivant, et le dernier est totalement inutile puisque tu as remplacé toutes les séquences d'échappement dans le premier.
il faut effectivement montrer un avant/après du fichier, ainsi qu'une description de tes intentions.
Je traite un fichier similaire à celui-ci (plus volumineux) :

[error] 0:07:28 16Mb  [31m[invalidparameter] - Valeur incorrecte de paramètre détectée [0m [error] 0:12:07 20Mb  [31m[invalidparameter] - Valeur incorrecte de paramètre détectée [0m [error] 0:21:03 28Mb  [31m[invalidparameter] - Valeur incorrecte de paramètre détectée [0m [warning] 0:29:56 56Mb  [33m[x] Diff de 2 items [0m [warning] 0:30:09 66Mb  [33mID #2482 à supprimer [0m [warning] 0:30:16 66Mb  [33mID #2483 à supprimer [0m [error] 0:30:36 66Mb  [31m[x] #144/1556 User introuvable : titi [0m [error] 0:30:39 66Mb  [31m[x] #246/1556 User introuvable : toto [0m [error] 0:30:43 66Mb  [31m[x] #571/1556 User introuvable : toto 


Ce fichier à pour particularité d'être sur une seul ligne...

La premiere commande sed remplace "[0m" par des retour à la ligne .
La seconde permet de garder uniquement les lignes contenant "User".
La troisiéme supprime le début de chaque ligne.
Ensuite je supprime les lignes en doublon.
La derniere quant à elle ne sert a rien.

Se qui donne la commande :

sed 's/\[0m/\n/g' test | sed -n '/User/p' | sed -r 's/.*(User.*)/\1/' | sort -u  > top2


Le résultat de cette commande est :

User introuvable : titi 
User introuvable : toto