0

私は2つのファイルを持っています

ファイルAの内容

paybackFile_537214-760887_000_20120801.xml
paybackFile_354472-544899_000_20120801.xml
paybackFile_62-11033_000_20120801.xml
paybackFile_831669-837544_000_20120801.xml
===========================================
Total file(s) - 4
===========================================

ファイルBの内容

14/08/2012 12:36:01: MSG: File paybackFile_537214-760887_000_20120801.xml.gpg decrypted successfully.
13/08/2012 11:36:01: MSG: File paybackFile_62-11033_000_20120801.xml.gpg not decrypted successfully.

ここに.xml ファイルの名前があります。ファイル A から * *.xml ファイルがファイル B に存在することを確認し、それが正常に復号化されたかどうかも確認します。

これで私を助けてくれませんか。

前もって感謝します。

よろしく、 スミタ

4

3 に答える 3

1
awk 'FNR==NR{a[$2".gpg"];next}(($5 in a) && ($0~/decrypted/))' filea fileb
于 2012-09-04T07:18:10.183 に答える
0

スクリプトは次のとおりです。

#!/bin/sh

FILEA=fileA
FILEB=fileB

awk -F" " ' { print $2 } ' $FILEA > .tmpfileA 
awk -F" " ' { print $5 } ' $FILEB | sed 's/\.gpg//' | grep 'decrypted successfully' > .tmpfileB


diff .tmpfileA .tmpfileB

rm -f .tmpfileA
rm -f .tmpfileB

変更する必要があるのは、変数FILEAとFILEBだけです。

指定した入力で実行すると、次の結果が得られます。

$ testAB.ksh 
2d1
< paybackFile_521000-845442_000_20120701.xml
$ 
于 2012-09-04T11:17:46.320 に答える
0

compare.awk という名前のスクリプトを作成します。これを内部に貼り付けます:

FILENAME=="fileB" && $5 ~ /xml/ {
     if ($6 == "decrypted" && $7 == "successfully.") {
         decrypted_file[$5] = 1;
     } else {
         decrypted_file[$5] = 2;
     }
}
FILENAME=="fileA" && $2 ~ /xml/ {
    if (decrypted_file[$2".gpg"] == 1) {
        print $2" exist and decrypted";
    } else if (decrypted_file[$2".gpg"] == 2) {
        print $2" exist but not decrypted";
    } else {
        print $2" not exist in fileB";
    }
}

次の方法で呼び出します。

awk -F' ' -f compare.awk fileB fileA

[編集] awk スクリプトのないシェルの場合 (まだ grep、sed、cut、および wc tho が必要です):

#!/bin/bash

TESTA=`grep ".xml" fileA | cut -d' ' -f2`
TESTB=`grep ".xml" fileB | cut -d' ' -f5,6,7 | sed 's/ /-/g'`
DECRYPT_YES=""
DECRYPT_NO=""

for B in ${TESTB}
do
 DECRYPT_B=`echo ${B} | sed 's/.*gpg-decrypted-successfully\./1/'`
 if [ ${DECRYPT_B} == "1" ]
 then
   DECRYPT_YES=${DECRYPT_YES}" "`echo ${B} | sed 's/\.gpg.*//g'`
 else
   DECRYPT_NO=${DECRYPT_NO}" "`echo ${B} | sed 's/\.gpg.*//g'`
 fi
done

for FILE_A in ${TESTA}
do
 if [ `echo ${DECRYPT_YES} | grep "${FILE_A}" | wc -l` == 1 ]
 then
  echo ${FILE_A}" exist and decrypted"
 elif [ `echo ${DECRYPT_NO} | grep "${FILE_A}" | wc -l` == 1 ]
 then
  echo ${FILE_A}" exist but not decrypted"
 else
  echo ${FILE_A}" not exist"
 fi
done
于 2012-09-04T09:29:22.673 に答える