0

ディレクトリ内の特定のファイルに対していくつかの手順を実行するスクリプトを作成しようとしています。プロンプトで各ステップの作業ファイル。動作していない必要なファイルを処理するために「for」を使用するときです。

これがスクリプトと開始テキストファイルです。

#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
4

1 に答える 1

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

これは機能しません。スクリプトの上部で使用するset -xと、デバッグモードがオンになり、すべてのコマンドがエコーされます。

上記の行で行っていることは、の値をiに設定しますhc.ls1。実際に必要なのは、内部にリストされ hc.ls1ている各値に設定することです。

for i in $( cat hc.ls1 ) ; do cut -d "," -f 2,3,6 $i > $i.tx2;done
于 2013-02-07T21:19:04.653 に答える