text-processing – ¿Cómo contar el número de un personaje específico en cada línea?

Pregunta:

Me preguntaba cómo contar el número de un carácter específico en cada línea mediante algunas utilidades de procesamiento de texto.

Por ejemplo, para contar " en cada línea del siguiente texto

"hello!" 
Thank you!

La primera línea tiene dos y la segunda línea tiene 0.

Otro ejemplo es contar ( en cada línea.

Respuesta:

Puedes hacerlo con sed y awk :

$ sed 's/[^"]//g' dat | awk '{ print length }'
2
0

Donde dat es su texto de ejemplo, sed elimina (para cada línea) todos los caracteres que no sean " y awk imprime su tamaño para cada línea (es decir, la length es equivalente a la length($0) , donde $0 denota la línea actual).

Para otro carácter solo tienes que cambiar la expresión sed. Por ejemplo para ( para:

's/[^(]//g'

Actualización: sed es una especie de exageración para la tarea: tr es suficiente. Una solución equivalente con tr es:

$ tr -d -c '"\n' < dat | awk '{ print length; }'

Lo que significa que tr borra todos los caracteres que no están ( -c significa complemento) en el conjunto de caracteres "\n .

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım