The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

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
du de la liste avec du total de la liste Movomito De programmation et de script Shell 3 05-04-2008 09:33 PM
liste des colonnes inégalée mohan705 De programmation et de script Shell 3 12-12-2007 10:37 AM
Row à colonnes vskr72 UNIX pour les nuls Questions et réponses 4 03-21-2007 09:53 AM
comment générer une liste aléatoire à partir d'une liste mskcc De programmation et de script Shell 3 05-30-2006 03:30 AM
Comparer une valeur de 1 liste avec une autre liste manualvin De programmation et de script Shell 6 06-22-2004 06:42 AM

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 Rating: Thread Rating: 1 votes, 5.00 average. Modes d'affichage
  #1 (permalink)  
Old 08-26-2007
Baghera baghera is offline
Registered User
  
 

Join Date: Aug 2007
Posts: 23
Liste à l'aide de colonnes et awk

Salut je suis nouvelle dans ce forum et je suis un débutant quand il s'agit de la programmation shell et awk programmation. Mais j'ai le problème suivant:

J'ai une liste comme ceci:

1
2
3
4
5
6
7
8

Soit à partir d'un fichier ou d'une sortie d'une commande. Ce que je voudrais faire est de prendre ces valeurs dans les colonnes avec des valeurs x dans chaque colonne comme ceci:

1 2 3 4
5 6 7 8

Où x indique le nombre de colonnes, je voudrais. Ensuite, je tiens à ajouter toutes les valeurs de la colonne 1 et de diviser par le nombre de lignes (dans ce cas, 2).

oublié quelque chose: il s'agit d'un script shell Bourne. Est-il possible d'avoir x comme une variable d'entrée lors de l'exécution du script?

Ou est-il possible de, au lieu de colonnes, d'ajouter tous les x élément de la liste et prendre une moyenne?

Dernière édition par Baghera; au 08.26.2007 01:09 PM..
  #2 (permalink)  
Old 08-27-2007
ranj @ chn ranj@chn is offline Forum Advisor  
Jouer avec Ubuntu maintenant!
  
 

Join Date: Oct 2005
Location: Chennai
Messages: 365
ajouter tous les' x 'élément

Code:
awk -v var=4 -f sample.awk inputfile
où est sample.awk
Code:
(NR % var ) == 0 { sum+=$0; cnt++}
END {print sum, cnt }
Cela ajoute 4'th chaque élément de la liste.

Si vous voulez que le compte à partir de la première colonne dans la liste, modifier la sample.awk à
Code:
BEGIN { row_cnt=1 }
(NR % row_cnt ) == 0 { sum+=$0; cnt++; row_cnt+=var }
END {print sum, cnt }
  #3 (permalink)  
Old 08-27-2007
ahmedwaseem2000 ahmedwaseem2000 is offline
Registered User
  
 

Join Date: Aug 2005
Lieu: Bangalore
Messages: 219
Essayez ceci:

Code:
awk -v INPUT=$INPUT '
BEGIN { ORS=""}
{

print $0 " "
if (( NR % INPUT ) == 0) {
print "\n"
count++
}

if (( NR % INPUT ) == 1) 
sum += $0

}

END { 
 op = sum/count
print op }' Filename
  #4 (permalink)  
Old 08-27-2007
dennis.jacob dennis.jacob is offline Forum Advisor  
dj -------
  
 

Join Date: Feb 2007
Lieu: Singapour / Bangalore / Cochin
Messages: 575
cat file | xargs-n <nombre des éléments d'une row>

Code:
"/home/tdreader" > cat t.txt
1 2 3 4 5 6 7 8 9 12 12 32 5 66 56 343 8 875 434 0
"/home/tdreader" > cat t.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
12 12 32
5 66 56
343 8 875
434 0
Si c'est un fichier avec un nombre dans une ligne,
pour ce faire

Code:
cat filename | tr '\n' ' ' | xargs -n 3
  #5 (permalink)  
Old 08-27-2007
Baghera baghera is offline
Registered User
  
 

Join Date: Aug 2007
Posts: 23
J'apprécie vraiment l'aider.

J'aime la xargs chose. Est-il possible d'ajouter chaque élément dans une colonne et le diviser par le nombre d'éléments dans la colonne.

J'ai utilisé cette commande:

awk '(somme + \u003d $ 1 / 2) (sum1 + \u003d $ 2 / 2) END (print somme sum1)'

Mais, $ 1 / 2 où les 2 doit être une variable (le nombre d'éléments dans la colonne).

Aussi ranj @ chn je n'ai pas eu le script de travail, je dois faire quelque chose de mal. J'ai juste copié ce que vous avez écrit et ont essayé de le lancer avec:

awk-v var \u003d 2-f reader2.awk testfile.txt

Mais je ne vous les erreurs.

Et j'ai également essayé de ahmedwaseem2000 du programme, mais je n'ai pas eu à travailler que ce soit. Je regrette, mais je suis un véritable "noob" à cet égard. Mais l'aide que vous me sont précieux.
  #6 (permalink)  
Old 08-27-2007
ranj @ chn ranj@chn is offline Forum Advisor  
Jouer avec Ubuntu maintenant!
  
 

Join Date: Oct 2005
Location: Chennai
Messages: 365
après les erreurs

Ne après les erreurs de la machine Unix et que vous êtes connecté à - o / p de
Code:
uname -a
Cela pourrait aider à identifier le problème. Vous devez utiliser 'nawk'Au lieu de awk sur Solaris etgawk"Si son Linux.
  #7 (permalink)  
Old 08-27-2007
ahmedwaseem2000 ahmedwaseem2000 is offline
Registered User
  
 

Join Date: Aug 2005
Lieu: Bangalore
Messages: 219
Citation:
Posté par Baghera View Post
Et j'ai également essayé de ahmedwaseem2000 du programme, mais je n'ai pas eu à travailler que ce soit. Je regrette, mais je suis un véritable "noob" à cet égard. Mais l'aide que vous me sont précieux.
quelle est l'erreur que vous obtenez? son travail parfaitement bien pour moi. voir ci-dessous


Citation:
1 2 3 4
5 6 7 8
3
3 est le (1 + 5) / 2 \u003d 3

VOUS AVEZ BESOIN D'AFFECTER LA VALEUR DE "INPUT" VARIABLE avant d'exécuter le code d'autre, il vous donnera la "division par zéro dans le module" comme terme ENTREE \u003d 4 avant d'exécuter le code.
Closed Thread

Bookmarks

Tags
linux

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 03:02 AM.


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