Rechercher : dans
Par :

UNIX grep fichier en sortie

Dernière réponse le 4 jui 2007 à 22:29:56 fabien.joubert, le 4 jui 2007 à 10:33:16 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « UNIX grep fichier en sortie » dans :
UNIX - Les fichiers Voir Introduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Systèmes UNIX - Le shell VoirIntroduction au shell L'interpréteur de commandes est l'interface entre l'utilisateur et le système d'exploitation, d'où son nom anglais «shell», qui signifie «coquille». Le shell est ainsi chargé de faire l'intermédiaire entre le système...

1

dubcek, le 4 jui 2007 à 13:43:41

Regle=${regle}" " cela ne sert à rien

Remplacer le grep par awk:
ligne=$(awk '$1 ~ /'"$regle"'/ {print $0}' files/rules.txt)

Répondre à dubcek

2

jipicy, le 4 jui 2007 à 18:51:34

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 ;-))
Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

3

lami20j, le 4 jui 2007 à 21:51:04

pourrais-tu afficher ton fichier d'entrée

En fait c'est ici qu'il a commencé recherche dans liste fichier lami20j

Répondre à lami20j

4

 jipicy, le 4 jui 2007 à 22:29:56

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

$ 
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy