2015-05-06 9 views
9

öğesinde biçimlendirme listesi öğeleri Bask deneyimi yok, sadece nasıl başlayacağınızı öğrenmek istiyorum.Bash: HTML

Bir XHTML belgesini düzgün şekilde biçimlendiren bir bash betiği yazmam gerekiyor.

cat > format1 #create file 
#!bin/bash 
if tail of a line ends with "</A-a>": (like </li> or </ol> or </p> or </ul>) 
    add \n 
    fi 

if head of a line = <ol> or <ul> 
    add \n 
    fi 

bana bunu anlamak yardımcı olun:

<p>Perfect body</p> 
<ol> 
    <li>Big boobs</li> 
    <li>Nice butt</li> 
</ol> 

Şimdi ben böyle bir şey yapmak zorunda inanıyoruz: bu işe

<p>Perfect body</p><ol><li>Big boobs 
    </li><li> 
    Nice butt</li></ol> 

: Örneğin bu döner. Düşünebildiğim tek şey budur ve bunu nasıl çözeceğimi bilmek isterim.

+1

1. Cinsiyetçi örnekler için puan almazsınız. Sadece birayı kullan. –

+1

2. Bash, buradaki doğru araç değildir. Python ya da yakut, bu tür işler için bolca kütüphane yapın –

+0

Eğer 'büyük göğüsler' ile 'etkileyici sandığı' değiştirirseniz, sorunun cevabının cinsiyetçi özelliğini kaldırabilirsiniz :-) – paxdiablo

cevap

0

html-tidy yardımcı programına bakmanızı öneririz.

Kendiniz bir biçimlendirici yazmak zorunda değilsiniz, sizin için bunu yapan pek çok mevcut yardımcı program vardır, bunun önemsiz bir görev olmadığını ve "html güzel baskı biçimlendiricisini nasıl uygulayacağını" bir yana sormak için çok geniş bir soru (geniş sorular StackOverflow kurallarına aykırıdır).

1

html-tidy'u kullanın. Yukarıdaki komut xml dosyayı girinti diyor düzenli bir alias (tüm etiketler etiketleri kapanış gelmiş sağlar) oluşturur tidy

alias tidy="tidy -xml --indent auto --indent-spaces 1 --quiet yes -im" 

kullanmak istiyorsanız sizin .bashrc bu eklemek iyi bir fikir olacağını Tek bir boşluk girintili ve dosyayı yerinde değiştirir.

+0

Yanıt verdiğiniz için teşekkür ederiz, aslında bir şey (topal) yüklemek için izin yok beri kendimi yapmak için arıyorum. Şu anda puTTy kullanıyorum. –

0

HTML Düzenli olarak sisteminizde kurulu olabilir, bu benim içindi ve yüklemeyi hiç hatırlamıyorum. Eğer kılavuzu alırsanız -

'u çalıştırarak kontrol etmek isteyebilirsiniz.

tidy -options oldFile.xhtml -output newFile.xhtml 
0

içine bakmak için başka bir alternatif sisteminizde yüklü olabilir xmllint vardır: Sorun bir bash komut dosyası ile çözülmesi gerektiğini ve bundan sonra, htmltidy kullanamazsınız kısıtlamaları göz önüne alındığında

xmllint --format <input-file> 
1

:

#!/bin/bash 

echo $(cat)      |\ 
    sed 's/\s*\(<[^>]\+>\)\s*/\1/g' |\ 
    sed 's/></>\n</g'    |\ 
    awk '{ 
     if ($0 ~ /^<\/[^>]+>$/) indent=substr(indent,2); 
     print indent$0; 
     if ($0 ~ /^<[^\/>][^>]+>$/) indent=indent" "; 
    }' 

böyle içine boru içeriği olacak bu programı kullanmak için: Ben içeren bir dosya htmltidy.sh oluşturarak başlamak ediyorum

cat sexist.html | ./xhtmltidy.sh 

Bu, sağladığınız örnek girdiyi dikkate aldığında en azından hile yapacaktır.

Bazı açıklama:

  • kedi gelen ve XHTML için alan arka
  • sed şeritler
  • sed
  • bitişik XHTML etiketler arasında bir yeni satır koyar tek bir metin bir satır olarak Standart girdi her yakalar
  • awk, satır sonu XHTML etiketi (örneğin)
  • awk satırını
  • awk inc ile yazdırırsa girintiyi azaltır reases girinti line girişi karmaşıklığı daha karmaşık almaya başlıyor gibi bu oyuncak programı çok hızlı bir şekilde en kısa sürede kıracak

(örneğin gibi) bir başlangıç ​​XHTML etiketi ise. Ancak bu size, kendi yazmanızı değil, bir raf yardımcı programını kullanmak için neden daha iyi bir fikir verecektir.