UNIX grep fichier en sortie

fabien.joubert Messages postés 35 Statut Membre -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
for regle in $(cat list_rules3.tmp)
do
regle=${regle}" "
ligne=$(grep -A1 -B1 - w $regle files/rules.txt)
echo $ligne >>files/rules2.txt
done
cp files/rules2.txt files/rules.txt

Avec ces lignes de commande (ci dessus) j'obtiens ceci (ci dessous)

1183537204 H+01_N tous les lundis
1183537204 H+02_N tous les mardis
1183537204 J+01LS Du lundi au samedi
1183537204 J+01LV Du Lundi au Vendredi N Du Lundi au Vendredi sauf jours feries
1183537204 M+1DIMAN N Le premier dimanche du mois

Alors que j'aimerais obtenir ceci (ci dessous)

1183537204 H+01_N tous les lundis
1183537204 H+02_N tous les mardis
1183537204 J+01LS Du lundi au samedi
1183537204 J+01LV Du Lundi au Vendredi
1183537204 M+1DIMAN Le premier dimanche du mois

Que dois je faire? Quelqu'un peut il m'aider? merci
Configuration: Windows XP
Internet Explorer 6.0

2 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    regle=${regle}" " cela ne sert à rien

    Remplacer le grep par awk:
    ligne=$(awk '$1 ~ /'"$regle"'/ {print $0}' files/rules.txt)
    0
  2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Pour une meilleure compréhension de notre part, et une réponse plus précise ou adéquate (bien que je suis persuadé que la réponse de "dubcek" doit faire l'affaire), pourrais-tu afficher ton fichier d'entrée s'il te plaît, merci ;-))
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      pourrais-tu afficher ton fichier d'entrée

      En fait c'est ici qu'il a commencé recherche dans liste fichier
      0
    2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ah oui effectivement...
      Merci lami20j

      Fabien essaie ça :
      $ cat foo.ksh
      
      #! /bin/ksh
      
      set +xv
      
      for regle in $(cat list_rules3.tmp)
      do
      ligne=$(grep "${regle} " list_rules.tmp)
      echo $ligne >>rules.txt
      done
      
      $ ./foo.ksh
      
      $ cat rules.txt
      
      H+01_N tous les lundis
      H+02_N tous les mardis
      J+01LS Du lundi au samedi
      J+01LV Du Lundi au Vendredi
      M+1DIMAN Le premier dimanche du mois
      
      $ 
      ;-))
      0