0

完全に機能するAWKを2つ持っています

myScript3.awk

    #!/usr/bin/awk -f
    BEGIN {
        FS=">|</"
        OFS=","
    }
    {
     data[count++] = $2
     ptint $2
     }
    END{
       print data[2],data[6],data[3], FILENAME
    }

上記のスクリプトは xml ドキュメントをスキャンし、2 番目、6 番目、3 番目の要素とファイル名を返します。

    for filename in *.xml
    do 
        awk -f myscript3.awk $filename >> out.txt
    done

上記のスクリプトは、フォルダー全体をスキャンし、xml ファイルを一覧表示してから、myscript を実行します。これら 2 つのスクリプトを 1 つにマージする必要があります。ご協力いただきありがとうございます

4

2 に答える 2

1

呼び出し規則に関する注意: スクリプトを実行している場合は、先頭に shabang ( ) 行awk -f scriptは必要ありません。または、実行可能であるかのよう#!に shabang で実行することもできます。./scriptscript

答え

awkとがBEGINFILEあり、 /をそれらENDFILEに置き換えて、ファイルを引数として指定すると、次のように動作するはずです。BEGINENDxml

編集

以下のコメントでデニスが指摘したように、BEGINFILE. また、これを機能させるにはかなり最近のバージョンの GNU が必要であることに注意してくださいawk

myScript3.awk

BEGIN {
  FS=">|</"
  OFS=","
}
{
  data[count++] = $2
  print $2
}
ENDFILE {
   print data[2],data[6],data[3], FILENAME
}

次のように実行します。

awk -f myscript.awk *.xml
于 2012-08-22T08:20:00.970 に答える
0
#!/bin/bash
AWKPROG='BEGIN {FS=">|</" OFS=","}
{ data[count++] = $2; ptint $2 }
END {print data[2], data[6], data[3], FILENAME}'
for filename in *.xml;do awk $AWKPROG $filename; done >> out.txt

警告: 未テスト。

于 2012-08-22T06:07:37.010 に答える