#1 Le 16/12/2015, à 21:50
- Elven
[RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Salut !
J'ai une liste de sites. Un par ligne. Et j'aimerais pouvoir mettre chaque site entre :
[url][/url]
En regardant dans notepad on peut changer du texte par un autre, mais rien sur où ajouter du texte (début fin d'une ligne). LibreOffice : pareil. On peut copier et remplacer autre chose que du texte, mais rien sur l'endroit non-plus.
Comme toutes les adresses commencent par
http
je peux le remplacer par :
[url]http
Mais les fin des adresses sont toutes différentes, donc je ne peux pas le faire.
Il faudrait quelque chose qui ajoute au début et fin de toutes les lignes commençant par http.
Ou encore mieux, que chaque site soit comme ça :
[url=adresse]Nom du Site[/url]
Avec majuscule pour le nom du site.
Si vous avez des idées de commandes, ou d'appli, merci d'avance.
Dernière modification par Elven (Le 18/12/2015, à 13:44)
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#2 Le 16/12/2015, à 22:01
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Bonsoir,
Pour la première forme
sed '/^http/{s#^#[url]#;s#$#[/url]#}' liste_de_sites
Ajouté : Ou plus simple
sed -r '/^http/s#(.*)#[url]\1[/url]#' liste_de_sites
Dernière modification par pingouinux (Le 16/12/2015, à 22:03)
Hors ligne
#3 Le 17/12/2015, à 08:32
- Hizoka
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Bonjour,
où est stocké "Nom du Site" ?
while read Site
do
[[ "${Site:0:4}" == "http" ]] && echo "[url]${Site}[/url]" >> NouveauFichier
done < Fichier_des_sites
Sinon pour ajouter du texte avec un éditeur comme Kate :
remplacer avec utilisation des expressions relatives
rechercher ^ et remplacer avec [ url ]
recherche $ et remplacer par [ /url ]
il doit y avoir des équivalents dans les autres logiciels.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#4 Le 17/12/2015, à 08:46
- cqfd93
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Bonjour,
Dans gedit, on peut remplacer
\n
par
[/url]\n[url]
(\n est le saut de ligne)
et ajouter la balise qui manque en tout début et en toute fin de liste
− cqfd93 −
En ligne
#5 Le 17/12/2015, à 08:51
- credenhill
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
hello
awk '/^http/ {print "[url]" $0 "[/url]"}' fichier
Hors ligne
#6 Le 17/12/2015, à 11:19
- Elven
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Et bien ! Y'a du choix.
Comme j'ai mis les liens sous Gedit, je vais me servir de ça. J'ai aussi essayé les autres.
Hizoka : ça me sort bien le nouveau fichier, mais j'ai que le premier site dedans, qu'il écrit comme ça :
[url]http://www.site.fr/[/url][/url]
credenhill : idem ça m'écrit que le premier site en :
[url]http://www.site.fr/[/url][/url]
Pour la forme plus compliquée :
[url=adresse]Nomdusite[/url]
Vous avez des idées ?
Pour que ça soit plus propre et plus clair.
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#7 Le 17/12/2015, à 11:33
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Pour la forme plus compliquée :
[url=adresse]Nomdusite[/url]
Vous avez des idées ?
Pour que ça soit plus propre et plus clair.
Il faudrait savoir où on récupère le nom du site. Si c'est à partir de l'url, il faudrait un exemple.
Ajouté : Les commandes de Hizoka #3 et credenhill #5 sont correctes. Soit ton fichier est bizarre, soit tu as fait une erreur dans les commandes.
Dernière modification par pingouinux (Le 17/12/2015, à 11:41)
Hors ligne
#8 Le 17/12/2015, à 11:55
- Elven
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Ils sont tous entre http://www.nomdusite.com, .fr ou autres.
Certains n'ont pas de www, mais ça se rajoute avec "remplacer par", en mettant http:// par http://www.
Ensuite il faudrait quelque chose qui copie ce qu'il y a entre les deux "." de l'adresse.
Pour les commandes qui marchaient mal, je vais regarder ça.
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#9 Le 17/12/2015, à 12:10
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Ce n'est pas clair (du moins pour moi). Si tu pouvais donner quelques exemples précis, ce serait bien.
Hors ligne
#10 Le 17/12/2015, à 12:27
- Hizoka
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
while read Site
do
Nom_du_site="${Site%.*}" # On vire l'extension
Nom_du_site="${Nom_du_site#*.}" # On vire tout jusqu'au 1er point (soit http://www.)
Nom_du_site="${Nom_du_site#*//}" # Dans le cas ou il n'y avait pas de www., il faut virer http://
[[ "${Site:0:4}" == "http" ]] && echo "[url=${Site}]${Nom_du_site}[/url]" >> NouveauFichier
done < Fichier_des_sites
cat Fichier_des_sites
http://hizoka.com
http://www.hizoka.fr
http://super-hizoka.com
http://www.super-hizoka.fr
while read Site
do
Nom_du_site="${Site%.*}" # On vire l'extension
Nom_du_site="${Nom_du_site#*.}" # On vire tout jusqu'au 1er point (soit http://www.)
Nom_du_site="${Nom_du_site#*//}" # Dans le cas ou il n'y avait pas de www., il faut virer http://
[[ "${Site:0:4}" == "http" ]] && echo "[url=${Site}]${Nom_du_site}[/url]" >> NouveauFichier
done < Fichier_des_sites
cat NouveauFichier
[url=http://hizoka.com]hizoka[/url]
[url=http://www.hizoka.fr]hizoka[/url]
[url=http://super-hizoka.com]super-hizoka[/url]
[url=http://www.super-hizoka.fr]super-hizoka[/url]
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#11 Le 17/12/2015, à 13:49
- Elven
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Ce n'est pas clair (du moins pour moi). Si tu pouvais donner quelques exemples précis, ce serait bien.
À oui, c'est vrai que c'était pas très clair. Et pas juste non-plus. C'est la faim qui m'a fait faire des erreurs.
Un échantillon :
http://www.site1.com/index.php
http://site2.fr/fr/
http://www.site3.se/web/home/home/home.php
http://www.site4.com/
http://www.site5.com/
http://site6.com/
http://www.site7.com/
http://www.site8.co.uk/
http://shop.site9.com/fr/
http://www.site10.com/
http://www.site11.com/en-FR/
http://www.site12.be/#/collection/
http://www.site13.com/
https://www.site14.com/
http://site15.com/
http://www.site16.com/
Hizoka : Merci ! Ça marche. J'ai pas passer les centaines de lignes au cribles, mais ça m'a l'air bon. Quelques cas particuliers comme :
[url=http://nomsite.fr/index.html#home]fr/index[/url]
ou
[url=http://www.nomdusite.co.uk/home/]nomdusite.co[/url]
ou encore :
[url=http://www.nomdusite.com/index.php]nomdusite.com/index[/url]
Même si c'est minoritaire, sur plusieurs centaines de lignes, ça va peut-être être long à corriger à la main.
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#12 Le 17/12/2015, à 14:26
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Tu peux essayer ceci :
sed -rn 's#(^https?://)([^w])#\1www.\2#;s#(^http[^.]*\.([^.]*)\..*)#[url=\1]\2[/url]#p' liste_de_sites
Correction d'une erreur
Dernière modification par pingouinux (Le 17/12/2015, à 18:32)
Hors ligne
#13 Le 17/12/2015, à 15:37
- nany
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Bonjour,
comme d’habitude, pingouinux tire le premier et fait du bon boulot (ce qui n’enlève rien au talent des autres contributeurs ).
Bon ben, du coup, j’y suis allé aussi avec une commande sed :
nany@stupidcomputer:~$ cat listsites
http://www.site1.com/index.php
http://site2.fr/fr/
http://www.site3.se/web/home/home/home.php
http://www.site4.com/
http://www.site5.com/
http://site6.com/
http://www.site7.com/
http://www.site8.co.uk/
http://shop.site9.com/fr/
http://www.site10.com/
http://www.site11.com/en-FR/
http://www.site12.be/#/collection/
http://www.site13.com/
https://www.site14.com/
http://site15.com/
http://www.site16.com/
nany@stupidcomputer:~$
nany@stupidcomputer:~$ sed -r 's#^#[url=#;s#$#][/url]#;s#(\[.*//)(.*\.[[:alpha:]]*)(/.*\])(\[.*$)#\1\2\3\2\4#;s#]www.#]#' listsites > bbcodelistsites
nany@stupidcomputer:~$
nany@stupidcomputer:~$ cat bbcodelistsites
[url=http://www.site1.com/index.php]site1.com[/url]
[url=http://site2.fr/fr/]site2.fr[/url]
[url=http://www.site3.se/web/home/home/home.php]site3.se[/url]
[url=http://www.site4.com/]site4.com[/url]
[url=http://www.site5.com/]site5.com[/url]
[url=http://site6.com/]site6.com[/url]
[url=http://www.site7.com/]site7.com[/url]
[url=http://www.site8.co.uk/]site8.co.uk[/url]
[url=http://shop.site9.com/fr/]shop.site9.com[/url]
[url=http://www.site10.com/]site10.com[/url]
[url=http://www.site11.com/en-FR/]site11.com[/url]
[url=http://www.site12.be/#/collection/]site12.be[/url]
[url=http://www.site13.com/]site13.com[/url]
[url=https://www.site14.com/]site14.com[/url]
[url=http://site15.com/]site15.com[/url]
[url=http://www.site16.com/]site16.com[/url]
nany@stupidcomputer:~$
En ligne
#14 Le 17/12/2015, à 16:29
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Je viens de corriger une erreur en #12.
Dernière modification par pingouinux (Le 17/12/2015, à 18:32)
Hors ligne
#15 Le 17/12/2015, à 18:08
- Hizoka
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
while read Site
do
Nom_du_site="${Site/#http:\/\/www.}"
Nom_du_site="${Nom_du_site/#http:\/\/}"
Nom_du_site="${Nom_du_site%%.*}"
[[ "${Site:0:4}" == "http" ]] && echo "[url=${Site}]${Nom_du_site}[/url]" >> NouveauFichier
done < Fichier_des_sites
Proposition qui fonctionne avec tes exemples.
C'est de la triche, je peux pas répondre en journée !
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#16 Le 17/12/2015, à 21:13
- Elven
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Tout marche aussi. C'est fabuleux.
nany : comme je préfère sans ".com" et autres, je vais faire avec les autres, mais je garde "> bbcodelistsites" pour la commande de pingouinux qui ne l'a pas mis, et qu'est pratique.
Je cherchais si "sed" avait pas une option d'export, mais non. En cherchant j'avais vu que "sort" l'avait par contre.
Quelques autres cas particuliers :
[url=http://shop.site1.com/]shop[/url]
[url=https://shop.site2.tv/hk/en/f2/index.php?reg=sSYy%2BPVA4VJYr9vsJLqHbg%3D%3D%40d0ZGpXGqXkUT%2Bv8ZXmt68Q%3D%3D]https://shop[/url]
[url=http://fr.site3.com/]fr[/url]
[url=http://shop.site4.fr/]shop[/url]
[url=http://shop.site5.com/fr/]shop[/url]
[url=https://www.site6.com/]https://www[/url]
J'essaie d'ajouter à la boucle de Hizoka une ligne comme Nom_du_site="${Nom_du_site/#http:\/\/}" en changeant http par http://shop ou les autres mais ça marche pas.
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#17 Le 17/12/2015, à 21:47
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
À partir de ce fichier
http://shop.site1.com/
https://shop.site2.tv/hk/en/f2/index.php?reg=sSYy%2BPVA4VJYr9vsJLqHbg%3D%3D%40d0ZGpXGqXkUT%2Bv8ZXmt68Q%3D%3D
http://fr.site3.com/
http://shop.site4.fr/
http://shop.site5.com/fr/
https://www.site6.com/
ma commande en #12 donne ceci
[url=http://www.shop.site1.com/]shop[/url]
[url=https://www.shop.site2.tv/hk/en/f2/index.php?reg=sSYy%2BPVA4VJYr9vsJLqHbg%3D%3D%40d0ZGpXGqXkUT%2Bv8ZXmt68Q%3D%3D]shop[/url]
[url=http://www.fr.site3.com/]fr[/url]
[url=http://www.shop.site4.fr/]shop[/url]
[url=http://www.shop.site5.com/fr/]shop[/url]
[url=https://www.site6.com/]site6[/url]
Elle ajoute le www s'il est absent, et prend comme nom du site ce qui se trouve entre les 2 premiers points de l'adresse. Si ce n'est pas ce que tu veux, il faut préciser ta demande.
Hors ligne
#18 Le 17/12/2015, à 21:55
- nany
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Oui, ce n’est pas si simple d’extraire le nom du site en fonction des différentes url.
En me basant sur l’échantillon fourni en #11, j’arrive à ceci :
sed -r 's#^#[url=#;s#$#][/url]#;s#(\[.*//)(.*\.[[:alpha:]]*)(/.*\])(\[.*$)#\1\2\3\2\4#;s#]www.#]#;s#\]shop\.#\]#;s#(\])([[:alnum:]])([[:alnum:]]*)\..*(\[)#\1\U\2\E\3\4#' listsites > bbcodelistsites
(En bonus, j’ai tenu compte de la demande de majuscule (j’ai mis uniquement la première lettre).)
P.S. : contrairement à pingouinux, je n’ajoute pas www si c’est absent car je n’y vois pas l’intérêt.
En ligne
#19 Le 17/12/2015, à 22:04
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
P.S. : contrairement à pingouinux, je n’ajoute pas www si c’est absent car je n’y vois pas l’intérêt.
Je me suis fié à ceci, mais ce n'est pas très précis :
Certains n'ont pas de www, mais ça se rajoute avec "remplacer par", en mettant http:// par http://www.
Ensuite il faudrait quelque chose qui copie ce qu'il y a entre les deux "." de l'adresse.
Hors ligne
#20 Le 17/12/2015, à 22:16
- nany
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Ah OK, je n’avais pas prêté attention au #8. Et, en effet, ça manque de précision. Mais je n’y vois toujours pas l’intérêt de cet ajout.
En ligne
#21 Le 17/12/2015, à 22:18
- Elven
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
C'est vrai que j'avais mis :
[url=adresse]Nom du Site[/url]
Mais c'est pas encore assez clair.
Donc en étant plus précis :
-l'adresse dans url= : la même que dans la liste. Sans www. en plus, puisque ça marche sans (quand on clique sur le lien entouré de ses balises)
-le nom du site entre les balises url : Majuscule sur la première lettre, sans le http et tout ce qui va jusqu'au nom du site. Sans .com et tout ce qu'il y a derrière non-plus.
-après, si le nom à plusieurs mots attachés, du genre "sitedebidule", ça serait génial e séparer en "Site de Bidule", mais comme il y a du français, de l'anglais, et des noms qui n'existe pas, ça va pas être possible. Comme "site2bidullule", ou "sit3deb1dul3", "klafoux".
Si les mots sont séparés par des "-", je peux rechercher/remplacer par un "espace".
Donc ça donne :
http://www.sitedebidule.com
[url=http://www.sitedebidule.com]Sitedebidule[/url]
Ubuntu studio 18.04
CPU I5 3330 (3GHz) / GPU Radeon 7850 1Go / RAM 8Go
SSD 120Go (partition /home séparée du système) / DD 1To (partition de données) / DD 2To (partition de données)
Hors ligne
#22 Le 17/12/2015, à 22:25
- nany
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
Dans ce cas, essaie ce que j’ai mis en #18. Ça correspond à ce cahier des charges (hormis la séparation de mots qui complexifie encore la chose ).
En ligne
#23 Le 17/12/2015, à 22:26
- Hizoka
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
il faut pas ajouter www car si le site n'a pas mis de redirection avec les www ca ne marche pas... (si je dis pas de conneries)
J'essaie d'ajouter à la boucle de Hizoka une ligne comme Nom_du_site="${Nom_du_site/#http:\/\/}" en changeant http par http://shop ou les autres mais ça marche pas.
while read Site
do
Nom_du_site="${Site/#http:\/\/www.}"
Nom_du_site="${Nom_du_site/#https:\/\/www.}"
Nom_du_site="${Nom_du_site/#http:\/\/}"
Nom_du_site="${Nom_du_site/#https:\/\/}"
Nom_du_site="${Nom_du_site/#shop.}"
Nom_du_site="${Nom_du_site/#fr.}"
Nom_du_site="${Nom_du_site%%.*}"
[[ "${Site:0:4}" == "http" ]] && echo "[url=${Site}]${Nom_du_site}[/url]" >> NouveauFichier
done < Fichier_des_sites
Dernière modification par Hizoka (Le 17/12/2015, à 22:28)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#24 Le 17/12/2015, à 22:31
- pingouinux
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
sed -rn 's#(^http[^.]*[\./]([^.])([^.]*)\..*)#[url=\1]\U\2\E\3[/url]#p' liste_de_sites
Hors ligne
#25 Le 17/12/2015, à 22:39
- nany
Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne
M’doutais bien que pingouinux trouverai une commande sed plus concise que la mienne.
Ceci dit, au final, je préfère le script d’Hizoka qui rend le code plus humainement lisible.
En ligne