[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] extraire deux colonnes



Le jeudi 3 décembre 2015, 10:20:30 David Martin a écrit :
> Bonjour,

’jour,

>[…]
> COMPTA:/u01/app/oracle/product/11.2.0.3/dbhome_1:N
>[…]
> J' aimerai avoir ce résultat :
> 
> COMPTA : 11.2.0.3
>[…]
> cat /etc/oratab | awk -F ":" '{print $1}'

  Au passage : UUOC (le 'cat' ne sert à rien).

> j'arrive à isoler le nom mais pas à afficher les version

  Tu as deux séparateurs, ':' et '/' donc il faudrait deux 
passes, une pour extraire et l’autre pour nettoyer (ou en 
utilisant 'split()' ou 'sub()' pour le nettoyage / second 
découpage).

  Déjà, le '/' est le plus complexe, donc la première chose est 
de récupérer la version et conserver le premier champ :

  awk -F/ '{print $1, $(NF-1)}' /etc/oratab

  Et là, ô miracle, le premier champ (vis-à-vis de '/') est 
'COMPTA:', le séparateur de sortie (OFS) est l’espace, donc la 
première passe te donne :

  COMPTA: 11.2.0.3

donc tu n’as même pas besoin de nettoyer le premier champ 
(enlever le ':' en trop et mettre un ':' comme séparateur).
(Tu peux supprimer l’espace en mettant la variable OFS à "" :
  awk -F/ 'BEGIN{OFS=""} {print $1, $(NF-1)}' /etc/oratab
)

-- 
 Sylvain Sauvage


Reply to: