Récupération de chaîne en bash
Résolu
Bonjour,
J'aimerais savoir comment je peux récupérer des lignes entre deux autre lignes déja connu sans la commande sed en bash.
Par exemple jai comme fichier:
kefjkef
egfdg
rgtdrg
P18
,fdjkg
dfhgf
fghg
C04
dgrygtr
dfg
et je veux à la fin avoir que ce qu'il y a en dessous de P18 et au dessus de C04:
fichier final:
,fdjkg
dfhgf
fghg
Merci de votre aide
J'aimerais savoir comment je peux récupérer des lignes entre deux autre lignes déja connu sans la commande sed en bash.
Par exemple jai comme fichier:
kefjkef
egfdg
rgtdrg
P18
,fdjkg
dfhgf
fghg
C04
dgrygtr
dfg
et je veux à la fin avoir que ce qu'il y a en dessous de P18 et au dessus de C04:
fichier final:
,fdjkg
dfhgf
fghg
Merci de votre aide
A voir également:
- Récupération de chaîne en bash
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
- Convertisseur récupération de texte - Guide
- Chaine radio - Télécharger - Médias et Actualité
- Chaine musique bouygues - Accueil - Guide TV et vidéo
3 réponses
Tu peux lire le fichier ligne par ligne et quand tu arrives sur la ligne qui correspond au debut de section à extraire, entrer dans une boucle qui écrit au bon endroit les lignes à extraire jusqu'à rencontrer la ligne qui marque la fin de la zone à extraire.
https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
http://www.laboiteaprog.com/article-70-3-bash_introduction
De toute façon sed n'aurait pas été le plus pratique pour ce que tu veux faire (voire n'aurait pas permis de le faire simplement). Je serais plutôt parti awk ou sur un script purement shell comme celui que je t'ai indiqué... sachant qu'en awk c'est plus facile à écrire.
Bonne chance
https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
http://www.laboiteaprog.com/article-70-3-bash_introduction
De toute façon sed n'aurait pas été le plus pratique pour ce que tu veux faire (voire n'aurait pas permis de le faire simplement). Je serais plutôt parti awk ou sur un script purement shell comme celui que je t'ai indiqué... sachant qu'en awk c'est plus facile à écrire.
Bonne chance
Ah effectivement jipicy je ne connaissais pas cette syntaxe (en fait je ne pensais pas que sed pouvait travailler sur un groupes de lignes, je croyais qu'il raisonnait ligne par ligne).
Merci pour ces précisions.
Merci pour ces précisions.
Comme ça :
script.awk
Certes c'est plus long à écrire mais je trouve ça plus clair et plus facile à généraliser ou à étendre. Enfin après chacun ses goûts, moi je trouve la syntaxe sed parfois peu parlante.
script.awk
/C04/{ extraire = 0 } { if (extraire == 1){ print $0; } } /P18/{ extraire = 1 }
Certes c'est plus long à écrire mais je trouve ça plus clair et plus facile à généraliser ou à étendre. Enfin après chacun ses goûts, moi je trouve la syntaxe sed parfois peu parlante.
awk -f script.awk fichier.txt
De toute façon sed n'aurait pas été le plus pratique pour ce que tu veux faire (voire n'aurait pas permis de le faire simplement)
Ben si justement, ça c'est son truc à "sed" :
Plus simple, tu meurs ;-))
Oui je sais qu'avec sed ça aurait été plus simple jipicy, mais il ne veut pas me le faire sur une carte électronique, il me crée toujours un dossier vide, alors que si je le fais directement dans l'ordinateur ça marche. J'ai essayé pleins de truc, si je met une commande pour récupérer les dernière ligne avec tail ça marche très bien, mais avec sed ça marche pas du tout. Saurais tu pourquoi?
Et avec "ed" :