Shell Script para contar líneas y palabras en un archivo

Puede haber algunos escenarios en los que uno necesite realizar un seguimiento de la cantidad de líneas y la cantidad de palabras en un archivo en particular. En ese escenario, cualquiera de los siguientes métodos se puede usar para contar el número de líneas y palabras en un archivo en particular en Linux. Pongamos algunos ejemplos para una mejor comprensión:

Ejemplo: considere este archivo (demo.txt) con el siguiente contenido:

This is first line.
This is second line.
This is third line.

Producción:

Number of line = 3
Number of words = 12

Echemos un vistazo a todos los métodos para contar el número de líneas y palabras y cómo se pueden usar en un script de shell.

Método 1: Usando el comando WC

wc significa recuento de palabras. Usando el comando wc , se puede determinar el número de palabras, el número de líneas, el número de espacios en blanco, etc.

Sintaxis-

wc [option] [input-file]

Acercarse:

  1. Cree una variable para almacenar la ruta del archivo.
  2. Utilice el comando wc –lines para contar el número de líneas.
  3. Utilice el comando wc –word para contar el número de palabras.
  4. Imprima tanto el número de líneas como el número de palabras usando el comando echo.

Archivo de entrada: cat demo.txt

This is first line
This is second line
This is third line

El comando cat se usa para mostrar el contenido del archivo.

Guion:

#!/usr/bin/bash

# path to the file
file_path="/home/amninder/Desktop/demo.txt"

# using wc command to count number of lines
number_of_lines=`wc --lines < $file_path`

# using wc command to count number of words
number_of_words=`wc --word < $file_path`

# Displaying number of lines and number of words
echo "Number of lines: $number_of_lines"
echo "Number of words: $number_of_words"

Producción:

Output wc command

Usando el comando wc

Explicación:

  • La primera línea le dice al sistema que bash se usará como intérprete.
  • El comando wc se usa para averiguar el número de líneas y el número de palabras.
  • Se crea una variable para contener la ruta del archivo.
  • Después de eso, el comando wc se usa con el argumento –lines para contar el número de líneas y, de manera similar, el comando wc con el argumento –words se usa para contar el número de palabras en el archivo.
  • Al final, el número de palabras y el número de líneas se muestran con el comando echo.

NOTA: Las líneas que comienzan con el símbolo «#» se denominan comentarios y el intérprete las ignora, excepto la primera línea.

Método 2: usar el comando

awk awk es un lenguaje de secuencias de comandos que se usa principalmente para el preprocesamiento y la manipulación de texto . Usando awk, podemos buscar patrones, buscar y reemplazar, contar palabras, contar líneas, contar símbolos especiales, contar espacios en blanco, etc.

Sintaxis:

awk {action-to-be-performed} [input-file]

Enfoque 1:

  • Cree una variable para almacenar la ruta del archivo.
  • Inicialice una variable de contador para contar el número de líneas.
  • Después de cada línea, incremente la variable contador para contar el número de líneas.
  • Muestra el número de líneas usando el comando de impresión.
  • Inicialice otra variable de contador para contar el número de palabras.
  • Utilice espacios en blanco como separador de registros e incremente la variable de contador para contar el número de palabras separadas por espacios.
  • Después de eso, muestre el número de palabras usando el comando de impresión.

Guion:

#!/usr/bin/bash

# path to the file
file_path="/home/amninder/Desktop/demo.txt"

# Method 1
echo "Using method 1"
# using awk command to count number of lines
awk 'BEGIN{c1=0} //{c1++} END{print "Number of lines: ",c1}' $file_path

#using awk command to count number of words
awk 'BEGIN{c=0} //{c++} END{print "Number of words: ",c}' RS="[[:space:]]" $file_path

Producción:

Output awk command approach 1

Usando el método 1

Explicación:

  1. En la primera línea, se crea una variable file_path para contener la ruta del archivo de texto.
  2. La declaración del comando awk se puede dividir en las siguientes partes.
    • BEGIN{c=0} inicializará una variable de conteo llamada. //{c++} incrementará la variable de conteo c en 1, cada vez que encuentre una nueva línea.
    • END{imprime “Número de líneas: “, c} imprimirá el número de líneas.
  3. De manera similar, el número de palabras se cuenta separando cada palabra por espacio usando RS=”[[:espacio:]]. Aquí, RS es un separador de registros y el espacio se usa como separador en este ejemplo.

Nota: Las líneas que comienzan con el símbolo «#» se denominan comentarios y el intérprete las ignora, excepto la primera línea.

Enfoque 2:

  1. Cree una variable para almacenar la ruta del archivo.
  2. Utilice una variable NR especial para averiguar el número de líneas. NR significa el número de registros y contiene el número de registros procesados.
  3. Use NF (Número de campos en el registro actual) para averiguar el número de palabras en cada línea.
  4. Luego use un bucle while para recorrer todas las líneas y sumar el NF de cada línea.
  5. Mostrar el número de líneas.

Ejemplo para NF: Vamos a presentar be-

First line is on top
Second line is on second last position

NF significa el número de campos en el registro actual, es decir, el número de palabras en la línea actual.

command: 
awk '{print NF}' demo.txt

Output:
5
7

Aquí, 5 representa que hay 5 palabras en la primera línea y 7 significa que hay 7 palabras en la segunda línea.

Guion:

#!/usr/bin/bash

# path to the file
file_path="/home/amninder/Desktop/demo.txt"

# Method 2
echo "Using method 2"

# using NR to count number of lines
awk 'END{print "Number of lines:",NR}' $file_path 

#using awk command to count number of words
awk '{i=0; count=0; while (i<NR) { count+=NF; i++;}} 
END {print "Number of words are: " count}' $file_path

Producción:

Output awk command approach 2

Usando el método 2

Explicación:

  • En la primera línea, se crea una variable file_path para contener la ruta del archivo de texto.
  • Luego, el número de líneas se imprime usando ‘END{print “Número de líneas:”,NR}’. 
  • Aquí, END representa que estamos interesados ​​en los últimos valores de la variable NR, ya que la variable NR contiene el recuento de los registros procesados.
  • Para contar el número de líneas, se utiliza un bucle while hasta el número de registros procesados.
  • Agregando el valor de la NF , es decir, el recuento de palabras en cada línea.
  • Al final, se imprime la cantidad de palabras que se almacenan en la variable de conteo.

Publicación traducida automáticamente

Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *