échanger 2 colonnes avec shell unix

Jean-Ba -  
 Jean-Ba -
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 41342 Statut Modérateur 4 896
 
Salut,
sed '/bbb/,/bbb/{/^1/ s/^\([^:]*\):\([^:]*\):\([^:]*\)/\1:\3:\2/}' fichier 
0
Jean-Ba
 
Merci une nouvelle fois jipicy pour ta réponse rapide !!! ;-)
0