Contador De Lineas De código C En Bash
Enviado por NinoScript • 25 de Diciembre de 2011 • 380 Palabras (2 Páginas) • 678 Visitas
#!/bin/sh
#cat $1 | sed -n 's/^[ ]*//;s:/*.**/::;s://.*$::;//*/!bf;:l;/*//!{;N;bl;};s:/*.**/::;:f;/^$/!p' | wc -l
#Tab Width: 8
cat $1 | sed -n ' #el -n significa que solo imprima lo que yo le digo explícitamente con p
s/^[ t]*// #busca todos los espacios o tabs que hayan al inicio y los borra
s:/*.**/:: #si encuentra cualquier caracter entre /* y */ en la misma linea lo borra
# esto lo hago especialmente para evitar los posibles casos /* // */ si borro //.*$ antes de
s://.*$:: #borra todos los comentarios con //, hasta el fin de linea
s/^.$// #borra las lineas que tengan un solo caracter
//*/!bf #si no encuentra un /* se salta a f (de final)
:l
/*//!{ #mientras no encuentre el */ que cierra el comentario
N #agrega la linea al hold space
bl #se devuelve a l (de loop)
}
s:/*.**/:: #si encuentra cualquier caracter entre /* y */ lo borra
#(notese el uso de : como delimitador, puede ser cualquier caracter, así no hay que escapear tanto)
:f
/^$/!p #si la linea no es nula, la imprime
' > $1.temp.txt #se tira el resultado a un archivo de texto
cat $1.temp.txt #se escribe el resultado
cat $1.temp.txt | wc -l #se cuentan las lineas
...