Lecture via awk

dim -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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)
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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]$
    ;-))
    0