Сопоставьте шаблон только один раз, затем переходите к следующему шаблону, даже если тот же шаблон снова соответствует сценарию оболочки - PullRequest
0 голосов
/ 14 октября 2019

Я хочу сопоставить шаблон только один раз, а затем перейти к следующему шаблону, даже если тот же шаблон снова совпадает.

Источник:

readMetaData(){
    if grep -q $1 $MetaDataFile
    then
        echo $1" Matched with Metadata Pattern, so calling HDFSWriter.jar"
        #java -jar HDFSWriter.jar $1
    else
        echo "ACK Filename not mactched with Metadata Pattern"
    fi
}
cd $ACKPath
FileList="ls -t *.ack"
fileList=`$FileList`
for f in $fileList
do
    FilePattern=`echo $f | cut -d '_' -f1-3`
    echo $f
    echo $FilePattern
    readMetaData $FilePattern
done

Файлы, доступные в папке:

ABC_PRODUCT_REFERENCE_9_2019092630009562.ack
ABC_PRODUCT_REFERENCE_10_2019092630009986.ack
IJK_VIEW_COB_9_2019092630009562.ack
IJK_VIEW_COB_10_2019092630009986.ack
XYZ_VIEW_MONTH_9_2019092630009562.ack
XYZ_VIEW_MONTH_10_2019092630009986.ack

Шаблон для сопоставления, который доступен в файле .csv:

ABC_PRODUCT_REFERENCE_<ROWCOUNT>_<CHECKER>_<TIMESTAMP>.ack
IJK_VIEW_COB_<ROWCOUNT>_<CHECKER>_<TIMESTAMP>.ack
XYZ_VIEW_MONTH_<ROWCOUNT>_<CHECKER>_<TIMESTAMP>.ack

Как только шаблон 'ABC_PRODUCT_REFERENCE' совпадает, я не хочу использовать тот жеобразец снова. Я хочу перейти к следующему шаблону 'IJK_VIEW_COB', как только это совпадет, затем я хочу перейти к 'XYZ_VIEW_MONTH' Даже если файлы соответствуют 2 раза для каждого шаблона.

Я сделал, чтобы соответствовать шаблону, но этовсе еще идет по тому же шаблону снова, так как есть еще один файл с таким же шаблоном.

Мой текущий вывод:

ABC_PRODUCT_REFERENCE_10_1514120_2019092630009986.ack
ABC_PRODUCT_REFERENCE Matched with Metadata Pattern
ABC_PRODUCT_REFERENCE_9_1514120_2019092630009562.ack
ABC_PRODUCT_REFERENCE
ABC_PRODUCT_REFERENCE Matched with Metadata Pattern
...