¿Es posible usar wc para contar los caracteres de cada línea en lugar de la cantidad total de caracteres?
por ejemplo
echo -e foo\nbar\nbazz | grep -i ba
devuelve:
bar
bazz
Entonces, ¿por qué echo -e foo\nbar\nbazz | grep ba | wc -m
devolver una lista de las longitudes de esas palabras? (3 y 4)
¿Sugerencias?
P.D.:¿Por qué se cuentan los saltos de línea con wc -m
? ? wc -l
cuenta los saltos de línea, entonces ¿por qué debería wc -m
contarlos también?
Respuesta aceptada:
wc
cuenta sobre todo el archivo;
Puede usar awk
para procesar línea por línea (sin contar el delimitador de línea):
echo -e "foonbarnbazzn" | grep ba | awk '{print length}'
o como awk
es principalmente un superconjunto de grep
:
echo -e "foonbarnbazzn" | awk '/ba/ {print length}'
(tenga en cuenta que algunos awk
las implementaciones informan el número de bytes (como wc -c
) en lugar de la cantidad de caracteres (como wc -m
) y otros contarán bytes que no forman parte de caracteres válidos además de los caracteres (mientras que wc -m
los ignoraría en la mayoría de las implementaciones))