linux - AWK file multiline command not working -
मेरे पास एक awk फ़ाइल है get_PV_sql_from_file.awk :
#! / Bin / awk -f /^CREATE.*VIEW.*PV_/ {inside_create = 1; प्रिंट "दृश्य मिला"} {if (inside_create == 1) {print $ 0}} /.*;$/ {if (inside_create == 1) {inside_create = 0; }}
और जब मैं इसे चलाने:
awk -f get_PV_sql_from_file.awk test_PV_sql.txt
मैं मिल गया है प्रत्येक पंक्ति में वाक्यांश "दृश्य पाया":
दृश्य पाया बल देखें "POSC" बनाएँ "P3V_SEC_TREES_V" ( "BSASC_ID", "BSASC_S", "LV0_K", "LV0_V",। "LV1_K", दृश्य के रूप में "LV1_V", "LV2_K", "LV2_V", "LV3_K", "LV3_V", "LV4_K", "LV4_V", "LV5_K", "LV5_V") पाया चयन विशिष्ट दृश्य पाया B1.BSASC_ID देखने B2.BSASC_S पाया, देखने R_SEC_TREES.LV0_K पाया, देखने R_SEC_TREES.LV0_V पाया, ... आदि
लेकिन अगर मैं एक पंक्ति पर awk फ़ाइल में प्रत्येक आदेश लिखें:
#! / Bin / awk -f /^CREATE.*VIEW.*PV_/ {inside_create = 1; प्रिंट "दृश्य मिला"} {if (inside_create == 1) {print $ 0}} /.*;$/ {if (inside_create == 1) {inside_create = 0; }}
यह है काम करता है सही:।
दृश्य पाया बल देखें "POSC" "PV_SEC_MODULES_V" ( "BSASC_ID", "मॉड्यूल" बनाने, " अधिनियम ") के रूप में चयन DISTINCT B1.BSASC_ID BSASC_ID, BSASC_PRIVILEGE.GDLN_OR_PRIV_ID मॉड्यूल, BSASC_PRIVILEGE.R_BSASC_PRIV_KIND अधिनियम ... आदि
क्यों हो रहा है? और जहां मैंने गलती की है?
आपको पैटर्न और खोलने की गलती जो कि एक ही पंक्ति अन्यथा पैटर्न को कोई क्रिया नहीं होने के कारण माना जाता है, इसलिए डिफ़ॉल्ट कार्यवाही, लाइन प्रिंट करें। अगली पंक्ति पर की जाने वाली क्रिया को कोई पैटर्न नहीं माना जाता है जिसका अर्थ है कि यह हर पंक्ति से मेल खाता है। तो अपने एडब्ल्यूके कोड को इस तरह लिखें:
<प्री> / ^ बनाएँ। * देखें। * पीवी_ / {inside_create = 1; प्रिंट "दृश्य मिला"} {if (inside_create == 1) {print $ 0}} /.*;$/ {if (inside_create == 1) {inside_create = 0; }}
Comments
Post a Comment