Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/05/2014, à 10:14

Le Goss

Bash: grep tronquer le chemin du fichier

Bonjour à tous,

J'effectue des recherches du type

grep -E -i --color=always "blabla" /home/${USER}/mondossier/monsousdossiera/fichiertextea /home/${USER}/mondossier/monsousdossiera/fichiertexteb

Le script où se trouve cette commande est dans "mondossier".
Suite au traitement de ce sujet je suis obligé de mettre le chemin tel quel.
Le résultat de la recherche est:

/home/legoss/mondossier/monsousdossiera/fichiertextea:il y a blabla ici
/home/legoss/mondossier/monsousdossiera/fichiertexteb:il y a blabla là

Comme l'indication des chemins n'est pas utile pour ce script, et qu'on y perd en lisibilité, je cherche à les réduire pour n'obtenir que

fichiertextea:il y a blabla ici
fichiertexteb:il y a blabla là

Merci pour votre aide,
Cordialement


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#2 Le 28/05/2014, à 10:48

tiramiseb

Re : Bash: grep tronquer le chemin du fichier

Salut,

Un petit coup de sed ça devrait le faire ( « sed 's/.*\/\([^\/]*\):/\1:/' » ).

=>

grep -E -i --color=always "blabla" /home/${USER}/mondossier/monsousdossiera/fichiertextea /home/${USER}/mondossier/monsousdossiera/fichiertexteb | sed 's/^.*\/\([^\/]*\):/\1:/'

Une autre possibilité serait de faire une boucle sur la sortie de grep et utiliser basename sur la partie avant le ":", mais je doute très fort que ça soit plus rapide...

Hors ligne

#3 Le 28/05/2014, à 10:50

pingouinux

Re : Bash: grep tronquer le chemin du fichier

Bonjour,
Tu peux éventuellement faire ceci

cd /home/$USER/mondossier/monsousdossiera
grep -E -i --color=always "blabla" fichiertextea fichiertexteb

Hors ligne

#4 Le 28/05/2014, à 10:54

tiramiseb

Re : Bash: grep tronquer le chemin du fichier

Oui, avec "cd" devant ça simplifie pas mal aussi lol
... surtout que dans un script ça ne devrait pas poser de problème.

Hors ligne

#5 Le 28/05/2014, à 11:03

tiramiseb

Re : Bash: grep tronquer le chemin du fichier

la commande basename ne convient pas ?

Elle ne peut pas être utilisée telle quelle, il faudrait faire une boucle comme je l'ai indiqué.

Hors ligne

#6 Le 28/05/2014, à 13:27

Le Goss

Re : Bash: grep tronquer le chemin du fichier

Les 2 solutions fonctionnent.
Une différence cependant: celle de pingouinux permet de garder le nom de fichier en couleur (lilas).
Merci pour votre coup de main! cool


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#7 Le 28/05/2014, à 13:33

tiramiseb

Re : Bash: grep tronquer le chemin du fichier

Le "cd" est mieux, plus propre et plus rapide, c'est sûr...
Et si en plus tu gardes ton joli lilas... lol

Hors ligne