पाठ 11 / 29

sed, awk और पाइपिंग

टेक्स्ट बदलें और कमांड्स को आपस में जोड़ें।

sed — टेक्स्ट बदलें

sed 's/old/new/' हर लाइन में पहला मेल बदलता है; सभी मेल बदलने के लिए g जोड़ें।

echo "cat sat on mat" | sed 's/at/og/'

Output:

cog sat on mat

awk — एक फील्ड निकालें

awk हर लाइन को व्हाइटस्पेस से फील्ड्स में तोड़ता है ($1, $2, ...) और उन्हें छापने या प्रोसेस करने देता है।

ps aux | awk '{print $2, $11}'

Output:

1 /sbin/init
842 /usr/bin/bash

कमांड्स को पाइप से जोड़ना

| एक कमांड का आउटपुट अगले कमांड के इनपुट के रूप में भेजता है, जिससे छोटे टूल्स मिलकर शक्तिशाली पाइपलाइन बनाते हैं।

cat access.log | grep "404" | wc -l

Output:

37

त्वरित जाँच: `sed 's/foo/bar/g'` क्या करता है?

  • हर लाइन में केवल पहला 'foo' बदलता है
  • हर लाइन में हर 'foo' को 'bar' से बदलता है
  • 'foo' वाली लाइनें हटाता है
Answer

हर लाइन में हर 'foo' को 'bar' से बदलता है — `g` फ्लैग replacement को global बनाता है — हर लाइन में सभी मेल, सिर्फ पहला नहीं।