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 13/06/2010, à 18:37

cedrix57

[Résolu][sed] Inverser 2 mots

Bonjour,

J'ai un fichier avec plein de fois un mot1 et un mot2, et j'aimerai bien les inverser.
par exemple :

ertt mot1 rerez mot2
fds mot1 fd mot1
mot2

donne

ertt mot2 rerez mot1
fds mot2 fd mot2
mot1

Quelqu'un sait comme je pourrait m'y prendre avec sed ?

Merci d'avance

Dernière modification par cedrix57 (Le 15/06/2010, à 18:59)

Hors ligne

#2 Le 13/06/2010, à 18:50

Watael

Re : [Résolu][sed] Inverser 2 mots

il faut utiliser un mot3 intermédiaire :

echo "ertt mot1 rerez mot2
fds mot1 fd mot1
mot2" | sed 's/mot2/mot3/g; s/mot1/mot2/g; s/mot3/mot1/g'
ertt mot2 rerez mot1
fds mot2 fd mot2
mot1

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 14/06/2010, à 08:20

nesthib

Re : [Résolu][sed] Inverser 2 mots

il va de soi que mot3 doit être suffisamment unique pour ne pas exister dans le texte initial (du genre utiliser une balise : <###>)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#4 Le 14/06/2010, à 08:46

Totor

Re : [Résolu][sed] Inverser 2 mots

Pas besoin de mot3 :

sed -r 's/(.*)mot1(.*)mot2(.*)/\1mot2\2mot1\3/' <fichier>

-- Lucid Lynx --

Hors ligne

#5 Le 14/06/2010, à 09:32

Watael

Re : [Résolu][sed] Inverser 2 mots

oui, Totor, mais il ne s'agit pas que de ça sad
cedrix57 souhaite changer chaque instance de mot1 par mot2, et inversement:

$ b=B a=A
$ echo "$b $a"
B A
$ ba=$a a=$b b=$ba
$ echo "$a$b"
BA

wink


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 14/06/2010, à 09:54

Totor

Re : [Résolu][sed] Inverser 2 mots

Arg, je n'avais pas vu cet aspect. je pensais qu'il souhait inverser leur position.  sad
Cela dit, cela reste toujours possible de le faire sans mot3 mais il y a un risque de perte blanc et/ou de formatage.


-- Lucid Lynx --

Hors ligne

#7 Le 14/06/2010, à 21:41

cedrix57

Re : [Résolu][sed] Inverser 2 mots

Je pense que je vais choisir la solution avec mot3, en mettant un mot suffisamment unique pour que cela puisse marcher dans plusieurs cas.

Merci pour vos réponses.

Hors ligne

#8 Le 15/06/2010, à 00:39

Hizoka

Re : [Résolu][sed] Inverser 2 mots

C'est en effet ce que j'aurais fait également, le mot3, utilise-en un qui n'existe pas (XXXcedrix57XXX) afin d'être sûr qu'il soit unique.

pense à ajouter un résolu dans ton titre.

Dernière modification par Hizoka (Le 15/06/2010, à 00:39)


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne