Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1285 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  (débutant)grep et expression régulière

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(débutant)grep et expression régulière

n°1276023
yoshi42
Posté le 02-01-2006 à 19:09:46  profilanswer
 

Bonjour,
J'ai une fonction media $racine qui me renvoie tous les mp3 du répertoire racine sous la forme

Code :
  1. #Mp3 n°? : titre : album : artiste : genre : année


Comment puis je faire un grep de $recherche sur l'un des champs (par exemple le 2eme)
 

Code :
  1. media $racine | grep -i  #"expressionrégulière"


je n'arive pas à construire l'expression régulière pour atteindre ce champ
 
Merci d'avance pour votre aide

mood
Publicité
Posté le 02-01-2006 à 19:09:46  profilanswer
 

n°1276037
Elmoricq
Modérateur
Posté le 02-01-2006 à 19:41:26  profilanswer
 

egrep pour les expressions régulières, mais de toute façon il y a bien plus simple :

media $racine | awk -F':' '( $2 == "nom album" ) { print $0 }'


 
(selon les versions, tu peux avoir à remplacer "awk" par "nawk" ou "gawk" )

n°1276144
Sve@r
Posté le 02-01-2006 à 23:37:34  profilanswer
 

yoshi42 a écrit :

Bonjour,
J'ai une fonction media $racine qui me renvoie tous les mp3 du répertoire racine sous la forme

Code :
  1. #Mp3 n°? : titre : album : artiste : genre : année


Comment puis je faire un grep de $recherche sur l'un des champs (par exemple le 2eme)
 

Code :
  1. media $racine | grep -i  #"expressionrégulière"


je n'arive pas à construire l'expression régulière pour atteindre ce champ
 
Merci d'avance pour votre aide


Ben grep ne sert pas à ça. grep sert à extraire des lignes entières contenant un certain pattern. Toi, tu veux extraire une certaine colonne donc c'est du "cut" qu'il te faut (ou du awk qui permet de programmer un script complet de traitement des lignes lues)
 
La solution de Elmoricq est fonctionnelle. Sinon pour ta culture perso, la syntaxe "cut" est la suivante:
media $racine |cut -f2 -d: pour demander d'extraire le second champ (-f2) en utilisant le délimiteur ":" ("-d:" )
 

n°1276170
yoshi42
Posté le 03-01-2006 à 00:42:28  profilanswer
 

Merci pour vos réponses
 

Sve@r a écrit :

Ben grep ne sert pas à ça. grep sert à extraire des lignes entières contenant un certain pattern. Toi, tu veux extraire une certaine colonne donc c'est du "cut" qu'il te faut (ou du awk qui permet de programmer un script complet de traitement des lignes lues)
 
La solution de Elmoricq est fonctionnelle. Sinon pour ta culture perso, la syntaxe "cut" est la suivante:
media $racine |cut -f2 -d: pour demander d'extraire le second champ (-f2) en utilisant le délimiteur ":" ("-d:" )


 
Sve@r tu m'as mal compris
je ne veux pas extraire une colonne. Je veux renvoyer les lignes (ligne entière, pas juste une colonne) qui ont dans un champ PRECIS un certain pattern.
J'ai trouvé la syntaxe, par exemple pour renvoyer les lignes qui ont un titre=test, je fais:[
 

Code :
  1. media $racine | egrep -i "^[^:]*: test :[^:]*"


 
pour renvoyer les lignes qui ont un genre=humour ou un genre=pop, je fais:
 

Code :
  1. media $racine | egrep -i "^[^:]*:[^:]*:[^:]*:[^:]*: humour|pop :[^:]*"


 
 :jap:

n°1276183
Elmoricq
Modérateur
Posté le 03-01-2006 à 06:42:06  profilanswer
 

Vachement plus simple que awk. [:pingouino]

n°1276615
Sve@r
Posté le 03-01-2006 à 22:08:24  profilanswer
 

yoshi42 a écrit :

Merci pour vos réponses
 
 
 
Sve@r tu m'as mal compris
je ne veux pas extraire une colonne. Je veux renvoyer les lignes (ligne entière, pas juste une colonne) qui ont dans un champ PRECIS un certain pattern.
J'ai trouvé la syntaxe, par exemple pour renvoyer les lignes qui ont un titre=test, je fais:[
 

Code :
  1. media $racine | egrep -i "^[^:]*: test :[^:]*"


 
pour renvoyer les lignes qui ont un genre=humour ou un genre=pop, je fais:
 

Code :
  1. media $racine | egrep -i "^[^:]*:[^:]*:[^:]*:[^:]*: humour|pop :[^:]*"


 
 :jap:


 
J'ai compris. Mais, contrairement à la remarque de Elmoricq, je pense que tu aurais avantage à utiliser "awk" parce que tu peux paramétrer facilement le champ qui doit contenir la valeur que tu cherches; alors qu'avec ton egrep talentueux mais... lourd, tu es obligé de spécifier un schéma incluant tous les champs précédents celui qui t'intéresse


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1276658
Elmoricq
Modérateur
Posté le 04-01-2006 à 00:42:03  profilanswer
 

Sve@r a écrit :

Mais, contrairement à la remarque de Elmoricq, je pense que tu aurais avantage à utiliser "awk"


 
C'était du second degré, je partage cette opinion. [:pingouino]  

n°1278558
Sve@r
Posté le 07-01-2006 à 01:28:37  profilanswer
 

Elmoricq a écrit :

C'était du second degré


oups... évidemment ! j'aurais dû m'en apercevoir tout seul :jap:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1278560
0x90
Posté le 07-01-2006 à 02:03:37  profilanswer
 

Sve@r a écrit :

J'ai compris. Mais, contrairement à la remarque de Elmoricq, je pense que tu aurais avantage à utiliser "awk" parce que tu peux paramétrer facilement le champ qui doit contenir la valeur que tu cherches; alors qu'avec ton egrep talentueux mais... lourd, tu es obligé de spécifier un schéma incluant tous les champs précédents celui qui t'intéresse


 

Code :
  1. "^([^:]*:){4} humour|pop (:[^:]*:){1}"


marche pas ca ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°2038661
ensienne
Posté le 26-11-2010 à 13:32:18  profilanswer
 

Bonjour,
 
je suis bloqué sur un point débile depuis des heures.
 
je veux créer un path (chemin d'un dossier avec les expressions régulières).
pour être précis, voici ce que je fais.
 
1.J'ai un fichier texte dans leque je stoque des noms des autres fichiers.
2.je parcours ce fichier ligne par ligne et je récupère le nom de fichier.
=> ça est bon.
3. je dois enlever l'extension de fichier
=> c'est bon
4. je dois chercher ce fichier s'il existe ou nom dans mon dossier
exemple.
toto.txt
=> je récupère toto
 
=> je dois chercher s'il existe toto ou toto.txt dans mon dossier C
Donc je dois utiliser une expression régulière pour vérifier les deux cas mais je n'arrive pas à construire la bonne expression.
 
merc


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  (débutant)grep et expression régulière

 

Sujets relatifs
grep et affiche la ligne suivante .. cherche exercice debutant realisation site en css
Livres pour débutant en ASP ?Problème de débutant avec strcat
[Résolu] Expression régulière pour enlever les accents..[Débutant][ASPX] Action sur bouton radio
calulatrice d expression arithmetiqueTri dans un tableau (débutant inside)
Débutant, question sur syntaxe requete SQL 
Plus de sujets relatifs à : (débutant)grep et expression régulière


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR