दो sql डंप फ़ाइलों की तुलना करते समय सभी pgsql टिप्पणियों, सिंगल लाइन '--' और मल्टीपल लाइन्स '/**/' दोनों को अनदेखा करने के लिए सही डिफ कमांड सिंटैक्स क्या है?

मैंने यह कोशिश की है लेकिन यह काम नहीं किया।

Diff -b -I '^(--C|/*| *)' schema1.sql schema2.sql

0
Marcos DaSilva 13 नवम्बर 2020, 12:52

1 उत्तर

सबसे बढ़िया उत्तर

डेटा को प्रारूपित करने और भिन्न में पुनर्निर्देशित करने के लिए awk का उपयोग करना:

diff <(awk '!/^--/ && blnk!=1 && !/^\/\*/ { print $0 } /^\/\*/ { blnk=1 } /^\*\// { blnk=0 } ' schema1.sql) <(awk '!/^--/ && blnk!=1 && !/^\/\*/ { print $0 } /^\/\*/ { blnk=1 } /^\*\// { blnk=0 } ' schema2.sql)

Awk का उपयोग करते हुए, हम एक मार्कर मान blnk को 1 पर सेट करते हैं यदि हम */ से शुरू होने वाली एक लाइन का सामना करते हैं और फिर इसे 0 पर सेट करते हैं जब हमें */ से शुरू होने वाली लाइन का सामना करना पड़ता है, फिर जब कोई लाइन एक से शुरू नहीं होती है - और ब्लैंक 1 नहीं, हम लाइन प्रिंट करते हैं। यह अलग तुलना के लिए वापस पुनर्निर्देशित में आउटपुट से पहले schema1.sql और schema2.sql दोनों के लिए किया जाता है।

0
Raman Sailopal 13 नवम्बर 2020, 17:23