UNIX grep fichier en sortie

fabien.joubert Messages postés 35 Statut Membre -  
jipicy Messages postés 41342 Statut Modérateur -
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
A voir également:

2 réponses

dubcek Messages postés 19021 Statut Contributeur 5 639
 
regle=${regle}" " cela ne sert à rien

Remplacer le grep par awk:
ligne=$(awk '$1 ~ /'"$regle"'/ {print $0}' files/rules.txt)
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
pourrais-tu afficher ton fichier d'entrée

En fait c'est ici qu'il a commencé recherche dans liste fichier
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
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