2013-02-07 7 views
0

J'essaie de créer un script qui va passer par plusieurs étapes sur des fichiers spécifiques dans un répertoire. Chaque étape travail fichier à une invite. C'est quand j'utilise 'for' pour travailler sur les fichiers nécessaires qui ne fonctionnent pas.en utilisant 'for' dans le script shell

Voici le script et le fichier texte de départ.

#lab2dno.sh 
# 
#use cygwin 
#cygwin 
#work in %RAM%:\ 
cd '/cygdrive/e' 
    # delete header lines 
tail +4 preg.txt > file1.txt 
    # split into herdcode.tx1 from %RAM% (e) in bash-3.2 
awk -F "," '{close(f);f=$1}{ print > f".tx1" }' file1.txt 
    #file list (no ext) 
ls -1 *.tx1 | sed 's/\(.*\)\..*/\1/' > hc.ls1 
    # delete extra fields (and rename works @ prompt)) 
    # cut -d "," -f 2,3,6 41300090.tx1 > 41300090.tx2 
    # this one does not work 
for i in hc.ls1; do cut -d "," -f 2,3,6 $i > $i.tx2;done 
    # reorder fields and rename (works at propmt) 
    # awk -F, '{ print $2,$3,$1}' *.tx2 > *.tx3 
    # this one does not work 
for i in *.ls1; do awk -F, '{ print $2,$3,$1}' $i > $i.DNO;done 

... preg.txt ...

MNDHIA Export 

Name,Test Date,ID,Tag,Final Calculation,Symbols (Final Calculation),1,Parachek 
41300090,1/25/2013,1636,56439256,-0.008,OPEN,1,Parachek 
41300090,1/25/2013,1238,67046268,-0.017,OPEN,1,Parachek 
41732189,1/29/2013,304,55567637,-0.006,OPEN,1,Parachek 
41732189,1/29/2013,415,55646609,-0.007,OPEN,1,Parachek 
+1

Par ailleurs, la '-1' l'option (une seule entrée de répertoire par ligne de sortie) est implicite (c.-à-automatique) lorsque vous lancez 'ls' avec sortie dans un fichier ou un tube. – Scott

Répondre

0
for i in hc.ls1; do cut -d "," -f 2,3,6 $i > $i.tx2;done 

Cela ne fonctionnera pas. Utilisez set -x en haut de votre script, il activera le mode débogage et répercutera chaque commande. Ce que vous faites dans la ligne ci-dessus est la valeur ihc.ls1. Qu'est-ce que vous voulez réellement est de le mettre à chaque valeur figurant danshc.ls1:

for i in $(cat hc.ls1) ; do cut -d "," -f 2,3,6 $i > $i.tx2;done 
+1

Mieux serait 'en lisant i; faire ...; fait chepner

+0

Cela fonctionne très bien, merci! – user2052255