2012-09-19 16 views
11

Estoy recorriendo líneas en un archivo. Solo necesito saltear líneas que comienzan con "#". ¿Cómo hago eso?bash loop skip líneas comentadas

#!/bin/sh 

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

¡Gracias por la ayuda!

Respuesta

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

Francamente, sin embargo, a menudo es más clara que recurrir a grep:

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

También podría hacer algo demasiado inteligente con 'expr' o sufijo de eliminación (por ejemplo,' [-z "$ { línea %% # *} "]'), pero estos serían igual o menos legibles que la opción 'case ', creo. – pilcrow

+2

Para también pelar líneas donde el espacio en blanco (solo) precede a '#', use 'grep -v '^ \ s * #' mklement0

+1

Otra opción (si por alguna razón alguien quisiera evitar 'grep') podría ser' if [[$ line = ~^#]]; luego continúa; fi'. –

Cuestiones relacionadas