Sadık KILIÇ

Web Tabanlı Hafıza Yerleşimi

sed ile html işleme

Problem:
Html dosyasında body tag’ları içinde bulunan paragraflardaki rakamları, belirli bir karakter ile (#) değiştirmek.

Örnek Girdi:

<html>
<head>
<p>Merhaba, Burasi head taglari içerisinde </p>
<p>Bu yazı body içerisinde degil - 1 </p>
</head>
<body>
<p>Bu yazı body içerisinde - 1 </p>
<p>Bu yazı body içerisinde - 2 </p>
<p>Bu yazı body içerisinde - 3 </p>
<p>Bu yazı body içerisinde - 4 </p>
</body>
</html>

Komut:

sed '/<body>/,/<\/body>/ s/\(^<p.*\)\([0-9][0-9]*\)\(.*p>$\)/\1#\3/g' deneme.html

Çıktı:

<html>
<head>
<p>Merhaba, Burasi head taglari içerisinde </p>
<p>Bu yazı body içerisinde degil - 1 </p>
</head>
<body>
<p>Bu yazı body içerisinde - # </p>
<p>Bu yazı body içerisinde - # </p>
<p>Bu yazı body içerisinde - # </p>
<p>Bu yazı body içerisinde - # </p>
</body>
</html>

Açıklama:

  1. /<body>/,/<\/body>/

    sadece html body tagları arasında işlem yap

  2. \(^<p.*\)

    “<\p" ile başlayıp herhangi bir karakter ile devam eden kısmı (taa ki rakama kadar) etiketle (1)

  3. \([0-9][0-9]*\)

    Bir veya daha fazla rakam içeren kısmı etiketle (2)

  4. \(.*p>$\)

    Satır sonunda p> içeren kısmı ve öncesindeki herhangi karakter içeren kısmı etiketle (3)

  5. \1#\3/g

    2 etiketli kısmı # ile değiştir.

,

Leave a Reply

Your email address will not be published. Required fields are marked *