Lecture via awk

Bonjour,

Mon probleme est situé dans un shell script unix et est le suivant:

j'effectue un cat pour lire un fichier constitué comme suit:

A B od
C D od
E F od

od etant le return carriage.

lorsque j'utilise la synthaxe suivante, il ne lit pas la ligne complete en me renvoyant A en $1 et B en $2 mais me renvoi A en $1 en suite B en $1 en suite C en $1

for i in `cat ${BIN_DIR}/archive_file.ini`;
do
echo "*-----${i}------*"
GROUP=`echo $i | awk '{print $1}'`
TYPE=`echo $i | awk '{print $2}'`
done

Group est toujours egal a la valeur $1 mais $2 est tjrs vide.

Merci d'avance pour le coup de pouce.

Dim

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    Essaie ça plutôt :
    while read i ;
    do
    echo \"*-----${i}------*\"
    GROUP=`echo $i | awk '{print $1}'`
    TYPE=`echo $i | awk '{print $2}'`
    done  < ${BIN_DIR}/archive_file.ini
    ;-))

    PS. Sans les anti-slashes devant les guillemets (erreurs sur le site)
    1. Modérateur
      Je poste mes essais, et d'un parce que j'ai oublié de le faire et de deux pour faire des tests sur le formatage des balises de codes ...
      [jp@MDK tmpfs]$ cat fich.txt
      A B
      C D
      E F
      
      [jp@MDK tmpfs]$ cat script.sh
      #! /bin/bash
      
      #for i in  `cat fich.txt`;do
      while read i; do
              echo "*-----${i}------*"
               var1=`echo $i | awk '{ print $1 }'`
               var2=`echo $i | awk '{ print $2 }'`
               echo "var1 = $var1"
               echo "var2 = $var2"
       done < fich.txt
      
      [jp@MDK tmpfs]$ sh script.sh
      *-----A B------*
      var1 = A
      var2 = B
      *-----C D------*
      var1 = C
      var2 = D
      *-----E F------*
      var1 = E
      var2 = F
      [jp@MDK tmpfs]$
      ;-))