Contenu | Rechercher | Menus

Annonce

Le forum a une nouvelle maison !
Le forum a été migré sur un nouvel hébergement. Si jamais vous trouvez le moindre problème, n'hésitez pas à nous en faire part !
Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 13/06/2010, à 18:37

cedrix57
Membre

[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
Membre

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

eval, c'est mal.

Hors ligne

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

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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 : <###>)

Hors ligne

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

Totor
Membre

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
Membre

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


eval, c'est mal.

Hors ligne

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

Totor
Membre

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
Membre

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
Membre

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)

Hors ligne