Escribir en archivos usando el comando cat en Linux

En este artículo, echaremos un vistazo al comando cat en Linux. Exploraremos cómo escribir texto en un archivo, leer el flujo de entrada, agregar y concatenar archivos, así como otras operaciones.

Introducción

El comando cat es una herramienta de Unix que se utiliza para manipular y mostrar el contenido de los archivos. El comando recibe su nombre de la palabra "concatenate" porque tiene, entre otras cosas, la capacidad de concatenar archivos.

En este artículo, veremos algunas formas fáciles de usar este comando para escribir texto en un archivo con ejemplos. El uso de cat es muy sencillo, por lo que no se necesita experiencia previa en programación o Unix para seguirlo.

cat Conceptos básicos del comando

Comenzando, resumiremos los conceptos básicos del comando cat para ayudarlo si nunca lo ha usado antes o si necesita una breve descripción general.

Sintaxis

La sintaxis se ve así:

1
cat [OPTION]... [FILE]...

Para buscar rápidamente la sintaxis o las opciones de comando, ejecute cat con la opción de ayuda:

1
$ cat --help

O bien, puede utilizar las páginas del manual:

1
$ man cat

Estos comandos deberían mostrar la siguiente lista de opciones:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       equivalent to -vT
  -T, --show-tabs          display TAB characters as ^I
  -u                       (ignored)
  -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB
      --help     display this help and exit
      --version  output version information and exit

Visualización del contenido del archivo en la salida estándar {#visualización del contenido del archivo en la salida estándar}

Para imprimir el contenido de un archivo en la salida estándar, simplemente nombre el archivo que desea mostrar:

1
$ cat filename1 

Si el archivo está en un directorio diferente, tendrá que navegar hasta él:

1
$ cat /dir1/dir2/filename1 

Esperamos ver el contenido de este archivo, impreso en la salida estándar, en este caso, la terminal:

1
Content of filename1!

Este es el uso más común del comando cat, ya que facilita echar un vistazo al contenido de un archivo sin abrir un editor de texto.

Escribir texto en un archivo usando cat

Para redirigir la salida del comando cat desde la salida estándar a un archivo, podemos usar el operador de redirección de salida >:

1
$ cat filename1 > filename2

Esto sobrescribirá el contenido de filename2 con el contenido de filename1, así que asegúrese de que filename2 no contenga nada que le importe perder. Ahora, filename2 contiene:

1
Content of filename1!

El operador de redirección de salida redirigirá la salida de cualquier comando que llamemos. Por ejemplo, probemos con el comando pwd, que imprime el nombre del directorio de trabajo actual:

1
$ pwd > testfile

Si echamos un vistazo al testfile ahora:

1
$ cat testfile

Contiene la ruta del directorio de trabajo actual:

1
/home/kristina

Si el archivo al que está redireccionando no existe, se creará un archivo con ese nombre:

1
$ cat filename1 > newfilename

Concatenar archivos con cat

Concatenar varios archivos usando cat es simple: solo enumere los archivos en el orden deseado:

1
2
$ cat filename1 filename2 > outputfile
$ cat outputfile

Esto toma los archivos filename1 y filename2, los concatena y genera un nuevo outputfile:

1
2
Content of filename1!
Content of filename2!

Entrada estándar entre archivos

Cuando el nombre del archivo de entrada no aparece en la lista, cat comienza a leer desde la entrada estándar hasta que llega a EOF (fin de archivo). La señal de fin de archivo se envía mediante el atajo de línea de comando ctrl+d:

1
2
3
4
$ cat > outputfile
Hello
World
$ cat outputfile

Esto daría como resultado:

1
2
Hello 
World

Incluso podemos agregar texto de la entrada estándar entre los archivos que deseamos concatenar usando - para indicar dónde esperamos la entrada estándar. Si tenemos archivos como filename1, filename2 y filename3, y queremos texto de la entrada estándar entre filename1 y filename2, escribiríamos:

1
2
3
 $ cat filename1 - filename2 filename3 > output
 Text from standard input!
 $ cat output

Verificando salida, veremos algo como:

1
2
3
4
Content of filename1!
Text from standard input!
Content of filename2!
Content of filename3!

Agregar archivos con cat

En los ejemplos anteriores, el uso del operador de redirección descartó el contenido anterior del archivo output. ¿Qué sucede si queremos agregar el contenido nuevo al contenido anterior? Para agregar archivos usamos el operador >>:

1
2
$ cat filename1 filename2 >> output
$ cat output

Y eso debería resultar en:

1
2
3
Original output file contents.
Content of filename1!
Content of filename2!

Concatenación de contenidos de todos los directorios de archivos con cat

Para concatenar todo el contenido de todos los archivos en un directorio, usamos el comodín *:

1
$ cat /dir1/dir2/* > output

Para concatenar todo el contenido de todos los archivos en el directorio de trabajo actual, usaríamos:

1
$ cat * > output

* también se puede usar para concatenar todos los archivos con la misma extensión:

1
$ cat *.txt > output

Enumeración de números de línea

La enumeración de todas las líneas de salida se realiza con la opción -n:

1
2
$ cat -n filename1 filename2 filename3 > output
$ cat output

Lo que escribiría algo como:

1
2
3
     1  Content of filename1!
     2  Content of filename2!
     3  Content of filename3!

Escriba $ al final de cada línea {#escriba al final de cada línea}

La opción -E marca el final de cada línea en el archivo con el carácter $:

1
2
$ cat -E filename1 filename2 filename3 > output
$ cat output

Clasificación de líneas de archivos concatenados mediante canalización {#clasificación de líneas de archivos concatenados mediante canalización}

Este es un poco engañoso. El comando cat no puede ordenar, pero podemos usar tuberías para lograrlo. El comando de tubería (|) se usa para convertir la salida de un comando en la entrada de otro. Para ordenar las líneas de un archivo, usaremos cat y otro comando, llamado sort:

1
2
$ cat filename2 filename3 filename1 | sort > output
$ cat output

Esto resulta en:

1
2
3
Content of filename1!
Content of filename2!
Content of filename3!

Conclusión

Cat es una herramienta Unix simple pero poderosa que viene preinstalada en la mayoría de los sistemas. Se puede usar solo o en combinación con otros comandos usando tuberías. Creado originalmente por Ken Thompson y Dennis Ritchie en 1971, las funcionalidades intuitivas y fáciles de usar de cat superan la prueba del tiempo.

En este artículo, hemos explorado algunas de las posibilidades de usar el comando cat para escribir texto en archivos, verificar contenidos, concatenar y agregar archivos, así como enumerar líneas y ordenarlas.