Bonjour..
Ce que je cherche à faire :
dans un gros fichier texte je cherche à extraire des lignes comprises entre 1 motif de départ et 1 motif de fin ici je cherche a extraire le lien de l'image
j'ai essayé cette commande mais ca na pas fonctionner
sed -n '/motif1/,/motif2/p' fichier
# Oukisson ?
Posté par zipe31 . Évalué à 1.
Salut,
Dans ton fichier imbuvable, ils sont où les motifs (début et fin) et où il est le lien ?
[^] # Re: Oukisson ?
Posté par mino60 . Évalué à -5.
motif1 = src="
motif2 = "
[^] # Re: Oukisson ?
Posté par zipe31 . Évalué à 1.
Déjà ton fichier il est au format Micro$oft ;-(
Donc faut le convertir avant avec dos2unix.
Ensuite, je ne sais pas pourquoi, sed ne veut pas prendre tout l’intervalle avec cette syntaxe :
sed -n '/.*src="/,/".*/{//d;p}' fichier
Donc, il reste grep, qui lui est plus docile :
grep -Pzo 'src="\K[^"]*' fichier
;-)
[^] # Re: Oukisson ?
Posté par zipe31 . Évalué à 1.
Un truc qui marche avec sed :
;-)sed -n ':z;N;$!bz;s#.*src="\([^"]*\)".*#\1#p' fichier
# Avec Perl
Posté par Arthur Accroc . Évalué à 2. Dernière modification le 08 juin 2020 à 15:34.
Bonjour,
En laissant les lignes coupées, avec une ligne de séparation :
perl -0777 -ne 'print map("$_\n\n", /(?<=src=").*?(?=")/sg)' fichier.txt
Mais tu ne nous as pas dit ce que tu espérais récupérer exactement au bout.
En recollant les lignes d’un même champ src (en enlevant aussi les espaces de début de ligne) :
perl -0777 -ne 'print map({s/\s*\n\s*//g; "$_\n"} /(?<=src=").*?(?=")/sg)' /tmp/fichier.txt
« Le fascisme c’est la gangrène, à Santiago comme à Paris. » — Renaud, Hexagone
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.