Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

Hors 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

Elvan a écrit :

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

pingouinux a écrit :

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 wink).

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:~$ 

Hors 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 ! tongue


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.

Hors ligne

#19 Le 17/12/2015, à 22:04

pingouinux

Re : [RÉSOLU] Ajouter un texte en début et fin de chaque ligne

nany #18 a écrit :

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 :

Elven #8 a écrit :

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.

Hors 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 wink).

Hors 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. wink
Ceci dit, au final, je préfère le script d’Hizoka qui rend le code plus humainement lisible.

Hors ligne