Sed veya awk içindeki birden fazla satırı değiştirme [kapalı]


9

Ben bir smb dosyasında 5 satır yerine sed veya awk kullanmaya çalışıyorum ama sadece satırsonu ile başa çıkmak için nasıl bir fikrim yok.


6
Elbette, sed ve awk bunu yapabilir, ancak tam olarak sorunuzun ne olduğunu anlamakta biraz sorun yaşıyorum. Tam olarak soruna neden olan nedir? Yeni satırlar eklensin mi? Onları mı değiştiriyorsunuz?
frabjous

Yanıtlar:


19

Sed bu konuda oldukça kötü çünkü her seferinde bir satır çalışıyor. Bunu yapmak için gördüğüm tek iyi teknik , tüm dosyayı sed'in bekletme arabelleğinde depolamayı ve ardından aynı anda üzerinde çalışmayı içeren bu tekniktir :

sed -n '1h;1!H;${g;s/search/replace/;p;}'

Yapabiliyorsanız, bunu yapmak için perl kullanmak çok daha kolaydır:

perl -0pe 's/search/replace/'

search\nyeni satırları temsil etmek için s içerebilir


1
sedÇok satırlı kullanıcı için +1 .
Lazer

Perl komut satırının ne yaptığını açıklayabilir misiniz?
Michael

1
@Michael -0kayıt ayırıcısını null olarak ayarlar, böylece tüm dosya satır satır yerine bir kerede okunur. -pyerine koyduktan sonra sonucu yazdırır. -ebir sonraki argümanı çalıştırmak için ifade olarak alıyor mu ve s/search/replace/bu ifade
Michael Mrozek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.