मेरे पास बहुत से (100+) परिभाषित करता है / एन्यूमरेशन / वेरिएबल्स जैसे:
FOO: 1 बार: 2 QUX: 3 // ... ZYX: 99 XYZ: 100
मैं एक नई पंक्ति जोड़ना चाहता हूं: BAZ: 3
बार
के बाद, और QUX
के मान को '4' के साथ-साथ बाकी के मूल्यों को अपडेट करने के साथ-साथ अपडेट करें। BAZ
के बाद के सभी मूल्यों को बढ़ाने के लिए सबसे आसान और आसान समाधान क्या है, अंतर्निहित / मूल यूनिक्स टेक्स्ट संपादन उपकरण (पाठ संपादक, सेड, आदि) का उपयोग करते हुए?
$ cat file FOO: 1 बार: 2 QUX: 3 / / ... ZYX: 99 एक्सवाईजेड: 100
यह बार्स के बाद बीएजी डालता है और उसके बाद हर नंबर को बढ़ाता है:
$ awk 'NR == 1 , / ^ बार: / {प्रिंट; अगला}! एफ {प्रिंट "BAZ: 3"; f = 1} / ^ [[alnum:]] +: / {प्रिंट $ 1, ++ $ 2; अगला} 1 'फ़ाइल FOO: 1 बार: 2 BAZ: 3 QUX: 4 // ... ZYX: 100 एक्सवाईजेड: 101
यह कैसे काम करता है
-
एनआर == 1, / ^ बार: / {प्रिंट; अगला}
बार:
से शुरू होने वाली पहली पंक्ति सहित सभी रेखाएं प्रिंट करें -
! F {प्रिंट "BAZ: 3"; f = 1}
हम केवल इस कोड के बाद
बार
का सामना किया गया है। यहां,BAZ
लाइन को जोड़ें और झंडाf
को एक में सेट करें ताकि हम इसे फिर से जोड़ना न भूलें। -
/ ^ [[alnum:]] +: / {प्रिंट $ 1, ++ $ 2; अगला}
बृहदान्त्र के बाद एक पहचानकर्ता के साथ शुरू होने वाली किसी लाइन लाइन के लिए, वृद्धि बृहदान्त्र के बाद की संख्या और अगली पंक्ति तक जायें।
-
1
अन्य सभी पंक्तियों के लिए, जैसे
// ...
, उन्हें प्रिंट करें जैसा है
No comments:
Post a Comment