Sed et expression régulière

Résolu/Fermé
Utilisateur anonyme - 21 déc. 2014 à 16:03
 Utilisateur anonyme - 21 déc. 2014 à 17:12
Bonjour,

J'ai un petit souci au niveau de l'utilisation de la commande sed ou plutôt j'ai encore du mal à l'utiliser correctement pour obtenir ce dont j'ai exactement besoin. En fait à partir d'un fichier contenant des lignes de la forme suivante :
15208094 drwx------ 2 osms11 osb2 4096 déc 18 10:40 Rep2

j'aimerais pouvoir récupérer chaque élément séparé par les espaces de manière individuelle, seulement déjà à la deuxième expression je ne vois pas comment dire je veux toutes les lettres de l'alphabet et le '-' ? Voici un début de solution :
sed "s/\([0-9])\([a-z-]\).*/ inode : \1 ; permissions : \2/" lstest


(ltest est pour le fichier contenant toutes les lignes ^^)

D'avance je vous remercie et bonne fêtes !

Jérémy


2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
21 déc. 2014 à 16:16
Salut,

Le plus simple serait d'utiliser awk, beaucoup plus adapté à ce genre d'exercice (à savoir travailler sur des champs) :
$ awk '{ print "inode : ",$1,";"" permission : ",$2 }' plop 
inode : 15208094 ; permission : drwx------


Mais bon si tu tiens vraiment à le faire avec sed :
$ sed 's/\([^ ]*\) \([^ ]*\) .*/Inode : \1 ; Permission : \2/' plop 
Inode : 15208094 ; Permission : drwx------

1
Utilisateur anonyme
21 déc. 2014 à 17:12
Un grand merci à toi ! Je n'avais pas cerné le problème de la bonne manière.
0