2009-02-05 6 views
-1

Dans script shell, comment puis-je itérer à travers chaque ligne dans un fichier ASCII et effectuer une opération sur sa valeurcomment itérer chaque ligne d'un fichier ascii

Ceci est l'exemple d'un fichier ASCII que j'ai

 
23  3.4e-09  55.90  5.7e-07 
24  12.5  79.90  7.9e-09 
25  67.9  78.9  3.4e-09 
26  98.8  89.67  9.7e-09 

comment cum il prendra la première ligne et itérer ...

WAT DO U PAR lIGNE DIRE

+0

Quel système d'exploitation? Le script Shell est très différent sur Unices et Windows ... –

+0

Quel shell utilisez-vous? – Spence

Répondre

1

Une façon (en bash et ksh, au moins, peuvent aussi travailler dans sh plaine) est en utilisant quelque chose comme:

 
while read line 
do 
    ... 
done 

Cependant, cela modifiera les espaces sur chaque ligne. Si vous avez un format « suffisamment fixe » sur les lignes (disons chaque ligne est Vala Valb VALC), vous pouvez modifier la ligne de lecture pour lire Vala Valb VALC

3

en utilisant bash sous Linux, vous pouvez utiliser la lecture. Cela peut dépendre du shell et de la version que vous voulez utiliser.

Le « < » est l'opération de redirection et indique au shell de rediriger stdin à partir du fichier test.txt

Voir la commande de lecture sous SHELL dans la page de manuel bash pour plus d'informations.

#!/bin/sh 

while read line 
do 
    echo "[" $line "]" 
done < test.txt 
+1

Cela fonctionne actuellement pour moi avec zsh. – toon81

1

Dans Windows,

Parse une chaîne de texte: Une chaîne de texte sera traitée comme une seule ligne d'entrée d'un fichier, la chaîne doit être entourée de guillemets (ou de guillemets simples avec usebackq).

Echo juste la date de la chaîne suivante

FOR /F "tokens=4 delims=," %%G IN ("deposit,$45.50,23.7,12-AUG-07") DO @echo Date paid %%G 

D'ici: for /f loop through text

0

Je soupçonne même si vous obtenez la configuration en boucle correctement et l'espacement est toujours le même, vous aurez du mal à faire mathématiques sur ces valeurs car il y a des chiffres scientifiques là-bas comme 3.4e-09. Je doute que les scripts soient configurés pour transformer cela en une valeur réelle et il faudrait que ce soit quelque chose comme un double et non un nombre entier. Je ne connais pas vos compétences en programmation, mais je le ferais personnellement dans un programme.

Questions connexes