{"id":47664,"date":"2022-07-25T02:53:06","date_gmt":"2022-07-25T02:53:06","guid":{"rendered":"https:\/\/magazineoffice.com\/como-usar-el-comando-wc-en-linux\/"},"modified":"2022-07-25T02:53:09","modified_gmt":"2022-07-25T02:53:09","slug":"como-usar-el-comando-wc-en-linux","status":"publish","type":"post","link":"https:\/\/magazineoffice.com\/como-usar-el-comando-wc-en-linux\/","title":{"rendered":"C\u00f3mo usar el comando wc en Linux"},"content":{"rendered":"


\n<\/p>\n

\n
fatmawati achmad zaenuri\/Shutterstock.com<\/span><\/figcaption><\/figure>\n

Contar el n\u00famero de l\u00edneas, palabras y bytes en un archivo es \u00fatil, pero la flexibilidad real de Linux wc<\/code> El comando proviene de trabajar con otros comandos. Vamos a ver.<\/p>\n

\u00bfQu\u00e9 es el comando wc?<\/h2>\n

los wc<\/code> comando es una peque\u00f1a aplicaci\u00f3n. Es una de las principales utilidades de Linux, por lo que no es necesario instalarla. Ya estar\u00e1 en su computadora Linux.<\/p>\n

Puede describir lo que hace en muy pocas palabras. Cuenta las l\u00edneas, palabras y bytes en un archivo o selecci\u00f3n de archivos e imprime el resultado en una ventana de terminal. Tambi\u00e9n puede tomar su entrada de la secuencia STDIN, lo que significa que el texto que desea que procese se puede canalizar en \u00e9l. Aqu\u00ed es donde wc<\/code> realmente comienza a agregar valor.<\/p>\n

Es un gran ejemplo del mantra de Linux de \u00abhaz una cosa y hazla bien\u00bb. Debido a que acepta entradas canalizadas, puede usarse en conjuros de m\u00faltiples comandos. Como veremos, esta peque\u00f1a utilidad independiente es en realidad un gran jugador de equipo.<\/p>\n

Una forma que uso wc<\/code> es como marcador de posici\u00f3n en un comando complicado o alias que estoy cocinando. Si el comando terminado tiene el potencial de ser destructivo y eliminar archivos, a menudo uso wc<\/code> como sustituto del comando real y peligroso.<\/p>\n

De esa forma, durante el desarrollo del comando, obtengo informaci\u00f3n visual de que cada archivo se est\u00e1 procesando como esperaba. No hay posibilidad de que suceda algo malo mientras lucho con la sintaxis.<\/p>\n

Tan simple como wc<\/code> Es decir, todav\u00eda hay algunas peque\u00f1as peculiaridades que debe conocer.<\/p>\n

Primeros pasos con wc<\/h2>\n

La forma m\u00e1s sencilla de usar wc<\/code> es pasar el nombre de un archivo de texto en la l\u00ednea de comando.<\/p>\n

wc lorem.txt<\/pre>\n

\"Usando<\/p>\n

Esto causa wc<\/code> para escanear el archivo y contar las l\u00edneas, palabras y bytes, y escribirlos en la ventana del terminal.<\/p>\n

Las palabras se consideran cualquier cosa limitada por espacios en blanco. Si son palabras de un idioma real o no, es irrelevante. Si un archivo no contiene nada m\u00e1s que \u00abfrd g lkj\u00bb, todav\u00eda cuenta como tres palabras.<\/p>\n

Las l\u00edneas son secuencias de caracteres que terminan en un retorno de carro o al final del archivo. No importa si la l\u00ednea se ajusta en su editor o en la ventana de la terminal, hasta que wc<\/code> encuentra un retorno de carro o el final del archivo, sigue siendo la misma l\u00ednea.<\/p>\n

Nuestro primer ejemplo encontr\u00f3 una l\u00ednea en todo el archivo. Aqu\u00ed est\u00e1 el contenido del archivo \u201clorem.txt\u201d.<\/p>\n

cat lorem.txt<\/pre>\n

\"El<\/p>\n

Todo eso cuenta como una sola l\u00ednea porque no hay retornos de carro. Compare esto con otro archivo, \u00ablorem2.txt\u00bb, y c\u00f3mo wc<\/code> lo interpreta.<\/p>\n

wc lorem2.txt<\/pre>\n
cat lorem2.txt<\/pre>\n

\"Usando<\/p>\n

Esta vez, wc<\/code> cuenta 15 l\u00edneas porque se han insertado retornos de carro en el texto para comenzar una nueva l\u00ednea en puntos espec\u00edficos. Sin embargo, si cuenta las l\u00edneas con texto, ver\u00e1 que solo hay 12.<\/p>\n

Las otras tres l\u00edneas son l\u00edneas en blanco al final del archivo. Estos contienen s\u00f3lo retornos de carro. Aunque no hay texto en estas l\u00edneas, se ha iniciado una nueva l\u00ednea y as\u00ed wc<\/code> los cuenta como tales.<\/p>\n

Podemos pasar tantos archivos a wc<\/code> como nos gusta<\/p>\n

wc lorem.txt lorem2.txt<\/pre>\n

\"Usando<\/p>\n

Obtenemos las estad\u00edsticas para cada archivo individual y un total para todos los archivos.<\/p>\n

Tambi\u00e9n podemos usar comodines para poder seleccionar archivos coincidentes en lugar de archivos con nombres expl\u00edcitos.<\/p>\n

wc *.txt *.?<\/pre>\n

\"Usando<\/p>\n

Las opciones de la l\u00ednea de comandos<\/h2>\n

Por defecto, wc<\/code> mostrar\u00e1 las l\u00edneas, palabras y bytes en cada archivo. Es lo mismo que usar el -l<\/code> (l\u00edneas) -w<\/code> (palabras) y -c<\/code> (bytes) opciones.<\/p>\n

wc lorem.txt<\/pre>\n
wc -l -w -c lorem.txt<\/pre>\n

\"Uso<\/p>\n

Podemos especificar qu\u00e9 combinaci\u00f3n de figuras queremos ver.<\/p>\n

wc -l lorem.txt
\n
\nwc -w lorem.txt
\n
\nwc -c lorem.txt
\n
\nwc -l -c lorem.txt<\/pre>\n

\"Usando<\/p>\n

Debe prestarse especial atenci\u00f3n a la \u00faltima cifra, generada por el -c<\/code> (bytes) opci\u00f3n. Muchas personas confunden esto con contar los caracteres. en realidad cuenta bytes<\/em>. El n\u00famero de caracteres y el n\u00famero de bytes bien podr\u00edan ser los mismos. Pero no siempre.<\/p>\n

Veamos el contenido de un archivo llamado \u00abunicode.txt\u00bb.<\/p>\n

cat unicode.txt<\/pre>\n

\"El<\/p>\n

Tiene tres palabras y un car\u00e1cter del alfabeto no latino. vamos a dejar wc<\/code> procesar el archivo con su configuraci\u00f3n predeterminada de bytes<\/em>y lo haremos de nuevo, pero solicite caracteres<\/em> con el -m<\/code> (caracteres) opci\u00f3n.<\/p>\n

wc unicode.txt<\/pre>\n
wc -l -w -m unicode.txt<\/pre>\n

\"Contando<\/p>\n

Hay m\u00e1s bytes que caracteres.<\/p>\n

Echemos un vistazo al volcado hexadecimal del archivo y veamos qu\u00e9 est\u00e1 pasando. los hexdump<\/code> de comando -C<\/code> La opci\u00f3n (can\u00f3nica) muestra los bytes del archivo en l\u00edneas de 16, con su equivalente ASCII simple (si lo hay) al final de la l\u00ednea. Si no hay un car\u00e1cter ASCII correspondiente, un punto \u201c.<\/code>\u201d se muestra en su lugar.<\/p>\n

hexdump -C unicode.txt<\/pre>\n

\"Un<\/p>\n

En ASCII, un valor hexadecimal de 0x20<\/code> representa un car\u00e1cter de espacio. Si contamos tres valores desde la izquierda, vemos que el siguiente valor es un car\u00e1cter de espacio. As\u00ed que los primeros tres valores 0x62<\/code>, 0x6f<\/code>y 0x79<\/code> representar las letras en \u201cni\u00f1o\u201d.<\/p>\n

saltando sobre el 0x20<\/code>vemos otro conjunto de tres valores hexadecimales: 0x63<\/code>, 0x61<\/code>y 0x74<\/code>. Estos deletrean \u00abgato\u00bb. Saltando sobre el siguiente car\u00e1cter de espacio, vemos tres valores m\u00e1s para las letras en \u00abperro\u00bb. Estos son 0x64<\/code>, 0x5f<\/code>y 0x67<\/code>.<\/p>\n

Justo detr\u00e1s de la palabra \u00abperro\u00bb podemos ver un car\u00e1cter de espacio 0x20<\/code>y cinco valores hexadecimales m\u00e1s. Los dos \u00faltimos son retornos de carro, 0x0a<\/code>.<\/p>\n

Los otros tres bytes representan el car\u00e1cter no latino, que hemos marcado en verde. Es un car\u00e1cter Unicode y se necesitan tres bytes para codificarlo. Estos son 0xe1<\/code>, 0xaf<\/code>y 0x8a<\/code>.<\/p>\n

As\u00ed que aseg\u00farese de saber lo que est\u00e1 contando y de que los bytes y los caracteres no tienen por qu\u00e9 ser iguales. Por lo general, contar bytes es m\u00e1s \u00fatil porque te dice lo que realmente est\u00e1 en el interior<\/em> el archivo. Contar por caracteres te da el n\u00famero de cosas representado<\/em> por el contenido del archivo.<\/p>\n

RELACIONADO:<\/strong> \u00bfQu\u00e9 son las codificaciones de caracteres como ANSI y Unicode, y en qu\u00e9 se diferencian?<\/em><\/strong><\/p>\n

Tomar nombres de archivo de un archivo<\/h2>\n

Hay otra forma de proporcionar nombres de archivo a wc<\/code> . Puede poner los nombres de archivo en un archivo y pasar el nombre de que<\/em> archivo a wc<\/code>. Abre el archivo, extrae los nombres de archivo y los procesa como si se hubieran pasado en la l\u00ednea de comandos. Esto le permite almacenar una colecci\u00f3n arbitraria de nombres de archivo para su reutilizaci\u00f3n.<\/p>\n

Pero hay un problema, y \u200b\u200bes uno grande. Los nombres de los archivos deben ser nulo<\/em> rescindido, no retorno de carro<\/em> terminado. Es decir, despu\u00e9s de cada nombre de archivo debe haber un byte nulo de 0x00<\/code> en lugar del byte de retorno de carro habitual 0x0a<\/code>.<\/p>\n

No puede abrir un editor y crear un archivo con este formato. Por lo general, los archivos como este son generados por otros programas. Pero, si tiene un archivo de este tipo, as\u00ed es como lo usar\u00eda.<\/p>\n

Aqu\u00ed est\u00e1 nuestro archivo que contiene los nombres de archivo. abri\u00e9ndolo en less<\/code> te muestra lo extra\u00f1o\u201d^@<\/code>\u201d personajes que less<\/code> utiliza para indicar bytes nulos.<\/p>\n

less source-files-list.txt<\/pre>\n

\"Un<\/p>\n

Para usar el archivo con wc<\/code>tenemos que usar --files0-from<\/code> (leer entrada de) opci\u00f3n y pasar el nombre del archivo que contiene los nombres de archivo.<\/p>\n

wc ---files0-from=source-files-list.txt<\/pre>\n

\"wc<\/p>\n

Los archivos se procesan exactamente como si se hubieran proporcionado en la l\u00ednea de comandos.<\/p>\n

Tuber\u00eda Entrada al inodoro<\/h2>\n

Una forma mucho m\u00e1s com\u00fan, flexible y productiva de enviar informaci\u00f3n a wc<\/code> es canalizar la salida de otros comandos a wc<\/code> . Esto lo podemos demostrar con el echo<\/code> dominio.<\/p>\n

echo \"Count this for me\" | wc<\/pre>\n
echo -e \"Count thisnfor me\" | wc<\/pre>\n

\"Usando<\/p>\n

El segundo echo<\/code> El comando utiliza el -e<\/code> (caracteres escapados) para permitir secuencias escapadas como \u00abn<\/code>\u201d c\u00f3digo de formato de nueva l\u00ednea. Esto inyecta una nueva l\u00ednea, causando wc<\/code> para ver la entrada como dos l\u00edneas.<\/p>\n

Aqu\u00ed hay una cascada de comandos que alimentan su entrada de uno a otro.<\/p>\n

find .\/* -type f | rev | cut -d'.' -f1 | rev | sort | uniq<\/pre>\n
    \n
  • encontrar<\/strong> busca archivos (type -f<\/code>) recursivamente, comenzando en el directorio actual. rev<\/code> invierte los nombres de archivo.<\/li>\n
  • Corte<\/strong> extrae el primer campo (-f1<\/code>) definiendo el delimitador de campo como un punto \u00ab.<\/code>\u201d y leyendo desde el \u201cfrente\u201d del nombre de archivo invertido hasta el primer punto que encuentra. Ahora hemos extra\u00eddo la extensi\u00f3n del archivo.<\/li>\n
  • Rvdo<\/strong> invierte el primer campo extra\u00eddo.<\/li>\n
  • clasificar<\/strong> los ordena en orden alfab\u00e9tico ascendente.<\/li>\n
  • \u00fanico<\/strong> enumera las entradas \u00fanicas a la ventana del terminal.<\/li>\n<\/ul>\n

    \"La<\/p>\n

    Este comando enumera todas las extensiones de archivo \u00fanicas en el directorio actual y cualquier subdirectorio.<\/p>\n

    Si a\u00f1adimos el -c<\/code> (contar) opci\u00f3n a la uniq<\/code> comando contar\u00eda el ocurrencias<\/em> de cada tipo de extensi\u00f3n. Pero si queremos saber cu\u00e1ntas extensiones de archivo diferentes y \u00fanicas hay, podemos descartar wc<\/code> como el \u00faltimo comando en la l\u00ednea, y use el -l<\/code> (l\u00edneas) opci\u00f3n.<\/p>\n

    find .\/* -type f | rev | cut -d'.' -f1 | rev | sort | uniq | wc -l<\/pre>\n

    \"Agregar<\/p>\n

    RELACIONADO:<\/strong> C\u00f3mo usar el comando de corte de Linux<\/em><\/strong><\/p>\n

    Y finalmente<\/h2>\n

    Aqu\u00ed hay un \u00faltimo truco wc<\/code> puede hacer por ti. Le dir\u00e1 la longitud de la l\u00ednea m\u00e1s larga en un archivo. Lamentablemente, no te dice qu\u00e9 l\u00ednea es. Solo te da la longitud.<\/p>\n

    wc -L taf.c<\/pre>\n

    \"Obtener<\/p>\n

    Sin embargo, tenga cuidado, las pesta\u00f1as se cuentan como ocho espacios. Visto en mi editor, hay tres pesta\u00f1as de dos espacios al comienzo de esa l\u00ednea. Su longitud real es de 124 caracteres. Por lo que la cifra reportada se ampl\u00eda artificialmente.<\/p>\n

    Tratar\u00eda esta funci\u00f3n con una gran pizca de sal. Y con eso quiero decir que no lo uses. Su salida es enga\u00f1osa.<\/p>\n

    A pesar de sus peculiaridades, wc<\/code> es una gran herramienta para ingresar comandos canalizados cuando necesita contar todo tipo de valores, no solo las palabras en un archivo.<\/p>\n

    RELACIONADO:<\/strong> 37 comandos importantes de Linux que debe conocer<\/em><\/strong><\/p>\n<\/div>\n