échanger 2 colonnes avec shell unix

Fermé
Jean-Ba - 14 juin 2009 à 19:01
 Jean-Ba - 14 juin 2009 à 19:09
Bonjour,

j'apprends Unix et voici mon problème :

Je souhaite échanger la 2eme colonne avec la 3eme dans la zone bbb quand la 1ere colonne contient 111. Le séparateur est ":".

aaa
...:...:...
111:...:...
...:...:...
aaa
bbb
...:...:...
111:...:...
...:...:...
bbb

si je tape :
sed '/^1/s/^\([^:]*\):\([^:]*\):\([^:]*\)/\1:\3:\2/g' fichier
Ceci échange la 2eme et 3eme colonne quand la 1ere contient 111.

et si je fais :
sed '/bbb/,/bbb/s/^\([^:]*\):\([^:]*\):\([^:]*\)/\1:\3:\2/g' fichier
Ceci échange la 2eme et 3eme colonne dans la zone bbb.

En gros comment fusionner les 2 ? c'est peut être bête mais je trouve pas ! :-P
Merci !!
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
14 juin 2009 à 19:05
Salut,
sed '/bbb/,/bbb/{/^1/ s/^\([^:]*\):\([^:]*\):\([^:]*\)/\1:\3:\2/}' fichier 
0
Merci une nouvelle fois jipicy pour ta réponse rapide !!! ;-)
0