2016-04-11 17 views
0

XML değerinde öndeki ve sondaki boşlukları saymanın en iyi yolu nedir? Bu xml varsa Özellikle,:awml ile xml içinde öndeki ve sondaki boşlukları nasıl sayabilirim?

<?xml version="1.0" encoding="UTF-8"?> 
<dvm name="Filename" xml="http://www.google.it"> 
    <description>AL</description> 
    <columns> 
    <column>abcde</column> 
    <column>fg</column> 
    </columns> 
    <rows> 
    <row> 
     <cell id="1"> 08 4  </cell> 
     <cell id="2">AG</cell> 
    </row> 
    <row> 
     <cell id="1"> 00 6  </cell> 
     <cell id="2"> AL </cell> 
    </row> 
    <row> 
     <cell id="1">0 42 </cell> 
     <cell id="2">AN </cell> 
    </row> 
    </rows> 
</dvm> 

nasıl lider ve ">" ve Char/rakam ve/veya son karakter/haneye ve XML bitiş etiketi değer arasındaki ilk geçtiği arasındaki boşlukları sondaki güvenebilirsiniz awk komutuyla mı? Öndeki boşlukları ve sondaki boşlukların toplamını bilmem ve bunları iki değişkene koymam gerekiyor. Şimdiden teşekkürler.

çıkışı olmalıdır:

lider: 8

sondaki: Başlamadan önce 20

cevap

1

, beni bu yaklaşım çok kırılgan olduğunu varsayalım; XML'iniz bize nasıl gösterdiğinizden farklı şekilde biçimlendirilirse ve etiketlerden biri yeni satırlar gibi belirli karakterler içeriyor olsa bile başarısız olur. XML ile çalışırken, awk iş için doğru araç değildir.

Eğer girişi için böyle bir şey kullanarak gösterdik istediğiniz değerleri alabilir, dedi ki:

awk -F'[<>]' '$2 ~ /^cell/ { 
    if (match($3, /^ +/)) leading += RLENGTH 
    if (match($3,/+$/)) trailing += RLENGTH 
} END { print "leading: " leading+0, "trailing: " trailing+0 }' file 

Set alan ayırıcı için < veya > yüzden <cell> etiketlerinin içeriği ya bu satırdaki üçüncü alan. Etiket içeriğinin başında/sonunda yer alan boşlukları kontrol etmek için match kullanın. RLENGTH, eşleşen dizenin uzunluğuna ayarlanmış özel bir değişkendir.

+0

Merhaba, Cevabınız için teşekkürler. kodunuzla, çıktı: lider: takip eden: 4 – ciaccaro

+0

Belki sekme karakterleridir? Bir boşluk karakteri yerine desenlerin her birinde '[[: space:]]' kullanarak bunları tek boşluk olarak ele almak basit olurdu. –

+0

boş alan var, sekmeler değil – ciaccaro

İlgili konular