#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 : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde 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
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
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.
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