[Bash] Besoin d'aide.

Besoin d'aide. [Bash] - Shell/Batch - Programmation

Marsh Posté le 22-11-2007 à 16:41:35    

Bonjour,
 
J'aurais besoin d'un petit coup de pouce pour la création d'un script.
 
J'ai un fichier qui contient des lignes sous la forme suivantes :
  ZEPU3F0I RFX  R2MMSB   K2119150       1002       1002   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119161        797        797   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119170        631        631   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119174        335        335   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119184        740        740   1 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119191        424        424   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119194        343        343   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119203        502        502   0 CP 00%            
  ZEPU3F0I RFX  R2MMSB   K2119205        294        294   0 CP 00%            
   
Et je voudrais une commande qui extrait les lignes pour lesquelles le 7° champ et différent de 0.
 
J'ai trouvé la commande suivante :
cat "nomfichier" | awk '{print $7}' | grep -v 0
 
Mais elle n'affiche que la valeur du champ qui est différent de 0 mais pas la ligne entière.
 
Merci d'avance pour votre aide.


Message édité par NumanFirst le 23-11-2007 à 14:48:37
Reply

Marsh Posté le 22-11-2007 à 16:41:35   

Reply

Marsh Posté le 22-11-2007 à 18:24:06    

Code :
  1. for /f "tokens=1,2,3,4,5,6,7,* delims= " %%a in ('type fichier.txt') do set vrNumb=%%g& set vrLign=%%a %%b %%c %%d %%e %%f %%g %%h& call :testNumb
  2. goto fintestNumb
  3. :testNumb
  4. if not "%vrNumb%"=="0" echo %vrLign%
  5. goto :eof
  6. :fintestNumb


Message édité par Coolnut le 22-11-2007 à 18:25:04
Reply

Marsh Posté le 22-11-2007 à 18:28:49    

c'est une obligation de faire ça en batch [:petrus dei]

Reply

Marsh Posté le 22-11-2007 à 18:35:24    

ben dans le titre tu a mi batch ;)

Reply

Marsh Posté le 22-11-2007 à 19:21:27    

son batch à lui c genre du bash ou qqch comme ca, le tiens Coolnut c sous DOS/win nan ? :??:


Message édité par SICKofitALL le 22-11-2007 à 19:21:37

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 22-11-2007 à 19:22:41    

oui

Reply

Marsh Posté le 22-11-2007 à 20:09:21    

:??:
ca y est c devenu msn ici [:petrus75] ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 23-11-2007 à 14:50:22    

Excusez-moi, c'est du bash.
J'ai corrigé le sujet.
 
C'est un script que je vais lancer sur un serveur AIX Version 5.2


Message édité par NumanFirst le 23-11-2007 à 14:52:23
Reply

Marsh Posté le 23-11-2007 à 15:32:23    

Un truc comme ça devrait le faire :

awk '($7 != 0) { print $0 }' ton_fichier

Reply

Marsh Posté le 23-11-2007 à 17:04:45    

Elmoricq a écrit :

Un truc comme ça devrait le faire :

awk '($7 != 0) { print $0 }' ton_fichier



 
C'est parfait.
Merci beaucoup pour votre aide.

Reply

Marsh Posté le 23-11-2007 à 17:04:45   

Reply

Marsh Posté le 23-11-2007 à 17:08:13    

Putin c'est simple en bash

Reply

Marsh Posté le 23-11-2007 à 17:26:15    

Non, c'est batch qui est abusivement compliqué. Enfin c'est mon avis. [:dawao]

Reply

Marsh Posté le 04-12-2007 à 09:47:18    

bonjour a tous. Voila je me mets au shell depuis quelques temps et je fais des petits scripts mais j'ai besoin d'aide. Je cherche actuellement a faire un script permettant de compter le nombre d'occurence d'un mot (que l'on entre soi-meme) dans un texte. En clair si j'appelle mon script cherche.sh j'aimerais qu'en faisant :  
./cherche.sh bonjour bonsoir montexte.txt
il compte le nombre de fois qu'apparaissent les mots "bonjour" et "bonsoir" dans le fichier "montexte.txt".
j'ai deja essayé avec awk et autre mais je n'aboutit a rien.
Si quelqu'un pouvait m'aider ca serait sympa ;D

Message cité 1 fois
Message édité par Redrya le 04-12-2007 à 10:58:28
Reply

Marsh Posté le 04-12-2007 à 09:53:19    

Si j'ai bien compris tu veut compter le nombre de foi que se trouve le mot bonjour dans un fichier.txt, si c'est ca voila:

Code :
  1. for /f "delims=" %%i in ('type fichier.txt ^|find "bonjour"') do set /a vrCompt+=1
  2. echo %vrCompt%

Reply

Marsh Posté le 04-12-2007 à 10:13:13    

Redrya a écrit :

bonjour a tous. Voila je me mets au batch depuis quelques temps et je fais des petits scripts mais j'ai besoin d'aide. Je cherche actuellement a faire un script permettant de compter le nombre d'occurence d'un mot (que l'on entre soi-meme) dans un texte. En clair si j'appelle mon script cherche.sh j'aimerais qu'en faisant :  
./cherche.sh bonjour bonsoir montexte.txt
il compte le nombre de fois qu'apparaissent les mots "bonjour" et "bonsoir" dans le fichier "montexte.txt".
j'ai deja essayé avec awk et autre mais je n'aboutit a rien.
Si quelqu'un pouvait m'aider ca serait sympa ;D

 

Donc pas en batch, qui est DOS/Windows. L'erreur a été expliquée sur ce topic même. [:mlc]

 

Perso je ferais ça avec PERL :

perl -ne 'BEGIN { my $count = 0; } { $count += split /le_mot_à_compter/, $_; } END { print "$count\n"; }' fichier


Message édité par Elmoricq le 04-12-2007 à 10:13:29
Reply

Marsh Posté le 04-12-2007 à 10:41:23    

à Coolnut :: pourais-tu m'expliquer ton code car je n'arrive pas a le faire marcher (puis si possible donner une formule plus générale est non pas uniquement pour le mot "bonjour" mais pour n'importe quel mot rentré après l'execution du code => comme dit dans mon premier message).
 
à Elmoricq :: je ne prefere pas faire de perl pour le moment mais merci quand même  :)

Reply

Marsh Posté le 04-12-2007 à 10:49:34    

Hmm, c'est normal que tu ne puisses pas le faire fonctionner si tu es sur environnement unixoïde, puisque le code de Coonut c'est du batch (DOS/Windows).

 

Et pourquoi ne veux-tu pas utiliser PERL, normalement il est sur ton système s'il date de moins de quinze ans. [:dawao]

 

Sinon avec nawk + bash ça marche aussi :

count=0
for i in $(nawk -F'mot_à_chercher' '{ print NF }' fichier); do count=$(($count + $i)); done
echo $count


Message édité par Elmoricq le 04-12-2007 à 11:05:28
Reply

Marsh Posté le 04-12-2007 à 12:55:18    

Plus simple :

grep -o toto txt | wc -l

Reply

Marsh Posté le 04-12-2007 à 13:36:19    

J'ai une excuse :

grep: illegal option -- o


 
[:dawa]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed