उपयोगी sed स्क्रिप्ट्स और पैटर्न
(github.com)- सिर्फ 1 लाइन आउटपुट करें
→ sed -n '10p' file.txt
- 5वीं लाइन को छोड़कर बाकी सभी लाइनों में कैरेक्टर बदलें
→ sed '5!/s/foo/bar/' file.txt
- किसी खास कैरेक्टर से शुरू होने वाली सभी लाइनों में regex substitution
→ sed '/^hello/ s/h/H/' file.txt
- 5वीं लाइन से आखिरी लाइन तक ही बदलें
→ sed '5,$ s/foo/bar/' file.txt
- खाली लाइनें हटाएँ
→ sed '/^$/d' file
- दो regex के बीच की सभी लाइनें प्रिंट करें
→ sed -nE '/^foo/,/^bar/p' file.txt
- slash वाले टेक्स्ट को आसानी से ढूंढने के लिए custom delimiter का उपयोग
→ sed 's_/bin/bash_/bin/sh_' file.txt
- स्पेस से अलग किए गए duplicate स्ट्रिंग्स हटाएँ (तीन बार duplicate होने वाले छोड़कर)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- कोई खास pattern खोजकर बदलें, फिर सिर्फ बदले हुए हिस्सों को दूसरी फ़ाइल में सेव करें
→ sed 's_foo_bar_w replaced.txt' file.txt
- एक साथ कई बदलाव करें
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- दो keywords के बीच की सभी comments हटाएँ और खाली लाइन डालें
→ sed -E '/start/,/end/ s/#.*//' file.txt
-
से शुरू होने वाली सभी comments मिटाएँ
→ sed -E '/^#/d' f1
- किसी खास pattern के आने तक ही आउटपुट करें
→ sed '/start/q' file.txt
- किसी खास लाइन के बाद फ़ाइल insert करें
→ sed '5 r newfile.txt' file.txt
- किसी खास regex match के बाद वाली लाइन में टेक्स्ट जोड़ें
→ sed '/foo/a\AFTER FOO' file.txt
- किसी regex से match हुई लाइन को बदलें
→ sed '/foo/c\FOO IS CHANGED' file.txt
-
से शुरू होने वाली सभी comments को दूसरी फ़ाइल में सेव करें
→ sed -E '/^#/w comments.txt' file.txt
- हर दूसरी लाइन ही प्रिंट करें (एक लाइन छोड़कर एक लाइन, 3/4 आदि में बदला जा सकता है)
→ sed -n '1~2p' file.txt
- फ़ाइल को सीधे बदलें, लेकिन backup भी बनाएँ
→ sed -i.bak 's/hello/HELLO/' file.txt
- regex match के बाद दो खाली लाइनें जोड़ें
→ sed -E '/^#/G G' file.txt
1 टिप्पणियां
यह सच में एक ज़रूरी टिप है कि slash के अलावा दूसरे characters को भी delimiter के रूप में इस्तेमाल किया जा सकता है.
जैसे apt repository URL बदलते समय, slash शामिल करने की ज़रूरत काफ़ी बार पड़ती है