पाठ 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 बनाता है — हर लाइन में सभी मेल, सिर्फ पहला नहीं।