The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
SSH problèmes ysk UNIX for Advanced & Expert Users 1 07-19-2007 06:16 AM
Problèmes AIX et SAN. fjgonzalez AIX 4 07-18-2007 06:15 PM
Problèmes avec le dernier By_Jam UNIX for Advanced & Expert Users 3 09-29-2006 04:12 AM
Peu de problèmes vivekshankar UNIX pour les nuls Questions et réponses 3 05-21-2005 01:26 PM
"faire" des problèmes (problèmes de compliation?) xyyz UNIX for Advanced & Expert Users 5 11-05-2001 10:47 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 04-28-2008
scorpio scorpio is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 41
Problèmes avec le coupé

Salut à tous,


0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500


C'est le format de mon fichier de log et les paramètres de fichier journal sont comme

• 10 premiers caractères: MSISDN
• 6 caractères suivante: Hour
• 18 caractères suivante: ID Source SA
• 18 caractères suivante: ID SA Destination


J'ai 11 espaces entre ma première et deuxième colums.I nécessité de réduire fitst 10 char 6 prochains char et 18 char (y compris les espaces blancs). et j'ai essayé suivantes dans mon code

MSISDN \u003d `echo $ data | cut-c1-10`
HEURE \u003d `echo $ data | cut-c11-16`
ID_SA_SOURCE \u003d `echo $ data | cut-C17-35»
ID_SA_DEST \u003d `echo $ data | cut-C36-54»


Mais becos des espaces, il n'est pas couper correctement .. l'un peut proposer des solutions de rechange

Thnks
  #2 (permalink)  
Old 04-28-2008
namishtiwari namishtiwari is offline Forum Advisor  
Registered User
  
 

Join Date: Aug 2007
Lieu: Bangalore
Messages: 377
Citation:
Posté par scorpio View Post
Salut à tous,


0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500


C'est le format de mon fichier de log et les paramètres de fichier journal sont comme

• 10 premiers caractères: MSISDN
• 6 caractères suivante: Hour
• 18 caractères suivante: ID Source SA
• 18 caractères suivante: ID SA Destination


J'ai 11 espaces entre ma première et deuxième colums.I nécessité de réduire fitst 10 char 6 prochains char et 18 char (y compris les espaces blancs). et j'ai essayé suivantes dans mon code

MSISDN \u003d `echo $ data | cut-c1-10`
HEURE \u003d `echo $ data | cut-c11-16`
ID_SA_SOURCE \u003d `echo $ data | cut-C17-35»
ID_SA_DEST \u003d `echo $ data | cut-C36-54»


Mais becos des espaces, il n'est pas couper correctement .. l'un peut proposer des solutions de rechange

Thnks
Tout d'abord réduire les espaces entre les données d'un fichier de log avec la commande tr

Code:
HOUR=`echo $data | tr -s " " |cut -c11-16`

donner un essai à celle-ci.
  #3 (permalink)  
Old 04-28-2008
scorpio scorpio is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 41
Salut
Merci pour la réponse

Mais l'assiette de mon i cant espaces de fichiers de log. i nécessité de prendre aussi ..
becos les paramètres sont définis comme
• 10 premiers caractères: MSISDN
• 6 caractères suivante: Hour
• 18 caractères suivante: ID Source SA
• 18 caractères suivante: ID SA Destination
Cela inclut les caractères espaces blancs aussi
  #4 (permalink)  
Old 04-28-2008
namishtiwari namishtiwari is offline Forum Advisor  
Registered User
  
 

Join Date: Aug 2007
Lieu: Bangalore
Messages: 377
Citation:
Posté par scorpio View Post
Salut
Merci pour la réponse

Mais l'assiette de mon i cant espaces de fichiers de log. i nécessité de prendre aussi ..
becos les paramètres sont définis comme
• 10 premiers caractères: MSISDN
• 6 caractères suivante: Hour
• 18 caractères suivante: ID Source SA
• 18 caractères suivante: ID SA Destination
Cela inclut les caractères espaces blancs aussi

Code:
id=`echo 0680046755000011 3040249 3005930 60180GPRS4Samsung_SGH_Z500 | tr -s " " |cut -c17-35`
output is --- 3040249 3005930 60

  #5 (permalink)  
Old 04-28-2008
scorpio scorpio is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 41
Salut,

En fait, le fichier de log est comme 0608166896000001 dans ma première colonne 11 et 3001339 des espaces dans mon deuxième colonne (3001339) et de 11 espaces
3204235 dans mon troisième coumn.
...

Mais lors de la lecture ligne par ligne en utilisant le code suivant

alors que de lire les données
faire
echo $ data données
ID_SA_SOURCE \u003d `echo $ data | cut-C17-35»
ID_SA_SOURCE echo $ ID_SA_SOURCE
done <$ TRACKING_LOGDIR / $ listdata


Je ne reçois pas les 11 espaces de "données" au lieu de variable, je suis seulement un espace .. i want 11whtespaces premier et 3001339 la valeur de ma variable ID_SA_SOURCE ....

Pouvez-vous vérifier ce pleasse
  #6 (permalink)  
Old 04-28-2008
ère era is offline Forum Advisor  
Inutile de Herder Cats (en congé sabbatique)
  
 

Join Date: Mar 2008
Location: / il / est / que / bin / sh
Messages: 3652
Vous avez besoin de bien citer vos variables lorsque vous leur écho, sinon le shell whitespace trim. Je conseille d'utiliser des écho à tous, cependant.

Mais voici comment citer correctement. Pour être un peu plus de sécurité, je zap IFS, je ne crois pas qu'il est strictement nécessaire ici, mais c'est une technique que vous devriez être au courant.


Code:
OLDIFS=$IFS
IFS='
' # just a newline, in single quotes
while read data
do
  MSISDN="`echo "$data" | cut -c1-10`"
  HOUR="`echo "$data" | cut -c11-16`"
  ID_SA_SOURCE="`echo "$data" | cut -c17-35`"
  ID_SA_DEST="`echo "$data" | cut -c36-54`"
done < $TRACKING_LOGDIR/$listdata
IFS=$OLDIFS

Après que, sur la manière, comment quelque chose comme ça?


Code:
awk '{ OFS=":"; print substr($0, 1, 10), substr($0, 11, 16),
    substr($0, 17, 35), substr($0, 17, 35) }' $TRACKING_LOGDIR/$listdata |
while IFS=: read MSISDN HOUR ID_SA_SOURCE ID_SA_DEST; do
  echo "'$HOUR': All your '$ID_SA_SOURCE' are '$ID_SA_DEST' to '$MSISDN'"
done

  #7 (permalink)  
Old 04-28-2008
scorpio scorpio is offline
Registered User
  
 

Date d'inscription: avril 2008
Posts: 41
Salut tous,

J'ai essayé le premier de ses groupes de travail Merci à tous
Closed Thread

Bookmarks

Tags
awk, awk trim, trim, trim awk

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 05:52 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0