[pdksh] sed
#1

Bonsoir,

à la chaîne de caractère suivante :
Code :
([[https://man.openbsd.org/?query=aue&arch=macppc&sektion=4|aue]])

je veux pouvoir la transformer ainsi :
Code :
([[https://man.openbsd.org/macppc/aue.4|aue]])

sachant que "aue" peut changer et faire partie de l'ensemble [a-z] et parfois "4" aussi, mais lui reste un digit !

Pour exemple, voici l'ensemble d'un texte :
Code :
* Alteon Tigon I/II-based adapters ([[https://man.openbsd.org/?query=ti&arch=macppc&sektion=4|ti]])
    * Apple iMac Rev. A-C Ethernet ([[https://man.openbsd.org/?query=bm&arch=macppc&sektion=4|bm]])
    * Apple MACE Ethernet ([[https://man.openbsd.org/?query=mc&arch=macppc&sektion=4|mc]])
    * Apple GMAC ([[https://man.openbsd.org/?query=gem&arch=macppc&sektion=4|gem]])
    * ASIX Electronics AX88172 based USB adapters ([[https://man.openbsd.org/?query=axe&arch=macppc&sektion=4|axe]])
    * Broadcom BCM57xx/BCM590x (a.k.a. Tigon3) based PCI adapters ([[https://man.openbsd.org/?query=bge&arch=macppc&sektion=4|bge]])
    * Sun

je n'arrive pas à obtenir un résultat avec sed.
J'aurais cru faire simplement :
Code :
sed -i -e "s#\?query\=\(\w\)[b]\[/b]&arch\=macppc\&sektion\=\(\d\)\|#macppc/\1.\2#g" fichier

Mais non...
j'ai essayé à détecter à partir de l'ensemble '[[' jusqu'à son pendant final. Rien

Une idée ?

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#2

Citation :je n'arrive pas à obtenir un résultat avec sed.

J'aurais cru faire simplement :
Code :
sed -i -e "s#\?query\=\(\w\)[b]\[/b]&arch\=macppc\&sektion\=\(\d\)\|#macppc/\1.\2#g" fichier



Mais non...

j'ai essayé à détecter à partir de l'ensemble '[[' jusqu'à son pendant final. Rien



Une idée ?

Bonjour,
Ton explication n'est pas claire (pour moi en tout cas)
Donne un exemple de résultat attendu avec ton exemple de texte
et aussi une ou quelques lignes illustrant :
Citation :sachant que "aue" peut changer et faire partie de l'ensemble [a-z] et parfois "4" aussi, mais lui reste un digit !
Cordialement.
Répondre
#3

J'ai édité le premier post, en espérant que la mise en valeur par le biais de la balise 'code' aide à la compréhension.

Donc, pour les trois premières lignes de l'exemple précédemment cité, très légèrement modifié pour inclure non pas un '4', mais un autre digit sur une des lignes, cf la troisième avec le '8' :
Code :
* Alteon Tigon I/II-based adapters ([[https://man.openbsd.org/?query=ti&arch=macppc&sektion=4|ti]])
    * Apple iMac Rev. A-C Ethernet ([[https://man.openbsd.org/?query=bm&arch=macppc&sektion=4|bm]])
    * Apple MACE Ethernet ([[https://man.openbsd.org/?query=mc&arch=macppc&sektion=8|mc]])
Le résultat attendu :
Code :
* Alteon Tigon I/II-based adapters ([[https://man.openbsd.org/macppc/ti.4|ti]])
    * Apple iMac Rev. A-C Ethernet ([[https://man.openbsd.org/macppc/bm.4|bm]])
    * Apple MACE Ethernet ([[https://man.openbsd.org/macppc/mc.8|mc]])
C'est pour cela que j'ai écrit cecie :
Citation :sachant que "aue" peut changer et faire partie de l'ensemble [a-z] et parfois "4" aussi, mais lui reste un digit !
  • ligne 1 : première valeur trouvée est 'ti' ; deuxième valeur le '4'
  • ligne 2 : première valeur trouvée est 'bm' ; deuxième valeur, toujours le '4'
  • ligne 3 : première valeur trouvée est 'mc' : deuxième valeur le '8'
  • ligne x : etc…
Sachant qu'il peut y avoir plusieurs dizaines de lignes à modifier !!!

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#4

Code :
sed -E 's@\?query=([[:alpha:]]+)&arch=([[:alpha:]]+)&sektion=([[:alnum:]]+)@\2/\1.\3@'

Code :
solene@t480 /tmp $ cat a
* Alteon Tigon I/II-based adapters ([[https://man.openbsd.org/?query=ti&arch=macppc&sektion=4|ti]])
    * Apple iMac Rev. A-C Ethernet ([[https://man.openbsd.org/?query=bm&arch=macppc&sektion=4|bm]])
    * Apple MACE Ethernet ([[https://man.openbsd.org/?query=mc&arch=macppc&sektion=4|mc]])
    * Apple GMAC ([[https://man.openbsd.org/?query=gem&arch=macppc&sektion=4|gem]])
    * ASIX Electronics AX88172 based USB adapters ([[https://man.openbsd.org/?query=axe&arch=macppc&sektion=4|axe]])
    * Broadcom BCM57xx/BCM590x (a.k.a. Tigon3) based PCI adapters ([[https://man.openbsd.org/?query=bge&arch=macppc&sektion=4|bge]])
    * Sun
solene@t480 /tmp $ cat a | sed -E 's@\?query=([[:alpha:]]+)&arch=([[:alpha:]]+)&sektion=([[:alnum:]]+)@\2/\1.\3@'
* Alteon Tigon I/II-based adapters ([[https://man.openbsd.org/macppc/ti.4|ti]])
    * Apple iMac Rev. A-C Ethernet ([[https://man.openbsd.org/macppc/bm.4|bm]])
    * Apple MACE Ethernet ([[https://man.openbsd.org/macppc/mc.4|mc]])
    * Apple GMAC ([[https://man.openbsd.org/macppc/gem.4|gem]])
    * ASIX Electronics AX88172 based USB adapters ([[https://man.openbsd.org/macppc/axe.4|axe]])
    * Broadcom BCM57xx/BCM590x (a.k.a. Tigon3) based PCI adapters ([[https://man.openbsd.org/macppc/bge.4|bge]])
    * Sun
Répondre
#5

Merci., ça m'a bien aidé... mais j'ai rencontré exactement le même problème de décalage, dont je n'ai pas parlé, sur une page très grande.

Donc, j'ai fait par plus petites portions avec ton code, juste des portions "corresondantes"… et ça a marché.

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre
#6

Je dirais même mieux :

Code :
sed -i -E 's@\?query=([[:alpha:]]+)&arch=([[:alnum:]]+)&sektion=([[:digit:]]+)@\2/\1.\3@' file
Wink

En tout cas, ça m'aide bien !
Merci beaucoup

GPG:Fingerprint ed25519 : 072A 4DA2 8AFD 868D 74CF  9EA2 B85E 9ADA C377 5E8E
GPG:Fingerprint rsa4096 : 4E0D 4AF7 77F5 0FAE A35D  5B62 D0FF 7361 59BF 1733
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)