2

私はあなたが助けてくれるかどうか疑問に思っていました。私はbashスクリプトを初めて使用します。

2 つのリストを比較できるようにしたい。File1.txt には多くのパラメーターのリストが含まれ、file2.txt にはそれらのパラメーターのセクションのみが含まれます。

File1.txt

dbipAddress=192.168.175.130
QAGENT_QCF=AGENT_QCF
QADJUST_INVENTORY_Q=ADJUST_INVENTORY_Q
QCREATE_ORDER_Q=CREATE_ORDER_Q
QLOAD_INVENTORY_Q=LOAD_INVENTORY_Q

File2.txt

AGENT_QCF
ADJUST_INVENTORY_Q
CREATE_ORDER_Q

file1.txt のすべての Q が file2.txt に含まれているかどうかを確認したい ( の後=)。そうでない場合、bash スクリプトは停止しecho、メッセージが表示されます。

したがって、上記の例では、File2.txt に次の Q: が含まれていないため、スクリプトは停止するはずですLOAD_INVENTORY_Q

file1.txt または file2.txt の Q は特定の順序に従っていません。

4

5 に答える 5

1

cutの後の部分だけを取得するために使用できます=comm最初のファイルに含まれる行を出力するために使用できますが、2 番目のファイルには含まれません。

grep ^Q File1.txt | cut -d= -f2- | sort | comm -23 - <(sort File2.txt)
于 2013-05-28T12:51:06.457 に答える
0

関連する行が常に:file1.txtで始まると仮定します。Q

grep "^Q" file1.txt | while IFS= read -r line
do
    what=${line#*=}
    grep -Fxq "$what" file2.txt || echo "error: $what not found"
done

出力:

error: LOAD_INVENTORY_Q not found
于 2013-05-28T12:23:08.383 に答える