Kullanışlı sed betikleri ve kalıpları
(github.com)- Yalnızca 1 satır yazdırma
→ sed -n '10p' file.txt
-
- satır hariç tüm satırlarda karakter değiştirme
→ sed '5!/s/foo/bar/' file.txt
- Belirli bir karakterle başlayan tüm satırlarda düzenli ifade değiştirme
→ sed '/^hello/ s/h/H/' file.txt
- Yalnızca 5. satırdan son satıra kadar değiştirme
→ sed '5,$ s/foo/bar/' file.txt
- Boş dosyayı silme
→ sed '/^$/d' file
- İki düzenli ifade arasındaki tüm satırları yazdırma
→ sed -nE '/^foo/,/^bar/p' file.txt
/içeren metni daha kolay bulmak için özel ayraç kullanma
→ sed 's_/bin/bash_/bin/sh_' file.txt
- Boşlukla ayrılmış yinelenen dizeleri kaldırma (üç kez yinelenenler hariç)
→ sed -E 's_([a-zA-Z0-9_]+) \1_\1_ig' f1
- Belirli bir kalıbı bulup değiştirdikten sonra yalnızca değiştirilenleri başka bir dosyaya kaydetme
→ sed 's_foo_bar_w replaced.txt' file.txt
- Aynı anda birden fazla değiştirme
→ sed -e 's_foo_bar_' -e 's_hello_HELLO_' file.txt
- İki anahtar sözcük arasındaki tüm yorumları kaldırıp boş satır ekleme
→ sed -E '/start/,/end/ s/#.*//' file.txt
#ile başlayan tüm yorumları silme
→ sed -E '/^#/d' f1
- Belirli bir kalıp görünene kadar yazdırma
→ sed '/start/q' file.txt
- Belirli bir satırdan sonra dosya ekleme
→ sed '5 r newfile.txt' file.txt
- Belirli bir düzenli ifade eşleşmesinden sonraki satıra metin ekleme
→ sed '/foo/a\AFTER FOO' file.txt
- Belirli bir düzenli ifadeyle eşleşen satırı değiştirme
→ sed '/foo/c\FOO IS CHANGED' file.txt
#ile başlayan tüm yorumları başka bir dosyaya kaydetme
→ sed -E '/^#/w comments.txt' file.txt
- Her ikinci satırı yazdırma (bir satır atlayıp bir satır,
3/4vb. olarak değiştirilebilir)
→ sed -n '1~2p' file.txt
- Dosyayı doğrudan düzenlerken yedek oluşturma
→ sed -i.bak 's/hello/HELLO/' file.txt
- Düzenli ifade eşleşmesinden sonra iki boş satır ekleme
→ sed -E '/^#/G G' file.txt
1 yorum
Slash dışında başka karakterlerin de ayırıcı olarak kullanılabildiğini bilmek gerçekten olmazsa olmaz bir ipucu.
Çünkü apt depo URL’sini değiştirirken olduğu gibi, slash içeren durumlarla epey sık karşılaşıyorsunuz