awk
é muito melhor para isso:
#!/bin/bash
# Usage findsku <SKU> <QTY> <DIR>
# Example: findsku 605284307892 14 ~/mydir
# Result: found ./teste.edi: SKU=605284307892, QTY=14
sku=
qty=
dir=
echo "looking for SKU #${sku} with QTY=${qty} in ${dir}:"
while read -r file; do
awk -F'*' -v sku="$sku" -v qty="$qty" 'BEGIN{RS="*UP*"} ==sku &&
$NF==qty {print "found " FILENAME ": SKU=" sku ", QTY=" qty}' "$file"
done < <(find "$dir" -name "*.edi" -type f)
Eu acho que é praticamente auto-explicativo, e você pode se adaptar a qualquer valor de sku e qty que desejar. Mas sinta-se livre para fazer qualquer pergunta que quiser sobre isso!
Ele irá reciclar no dado DIR
, e você pode facilmente adaptá-lo para escanear outros arquivos além de *.edi