2012-09-19 26 views
11

Bir dosyada satırların üzerinden geçiyorum. Sadece "#" ile başlayan satırları atlaman gerek. Bunu nasıl yaparım?bash loop yorumladı satır

#!/bin/sh 

while read line; do 
    if ["$line doesn't start with #"];then 
    echo "line"; 
    fi 
done < /tmp/myfile 

Yardımlarınız için teşekkürler!

Açıkçası

cevap

15
while read line; do 
    case "$line" in \#*) continue ;; esac 
    ... 
done < /tmp/my/input 

, ancak grep yönelmek genellikle nettir: Ayrıca expr` veya sonek çıkarılması (örneğin `[$ {" -z `ile çok akıllıca bir şey yapabileceğini

grep -v '^#' < /tmp/myfile | { while read line; ...; done; } 
+0

satır %% # *} "]'), ancak bunlar, 'case' seçeneğinden eşit ya da daha az okunabilir olacak, bence. – pilcrow

+2

Ayrıca, beyaz boşlukların (yalnızca) # # öncesinde geldiği satırları kesip çıkarmak yerine, 'grep -v'^\ s * # ' mklement0

+1

Başka bir seçenek (eğer birisi grep'ten kaçınmak istemiyorsa) “eğer [[$ line = ~^#]]; sonra devam et; fi'. –