GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo catear un archivo de Awk?

END {
file = "a.txt"
system(cat file)
}

¿Quiero hacer algo así? (abrir un archivo cuyo nombre esté en una variable awk).
¿Cómo se hace?

Respuesta aceptada:

El problema es que system() pasa la línea de comando a un shell, por lo que, en general, debe escapar de todos los caracteres especiales del shell en el nombre del archivo.

awk tiene una matriz asociativa ENVIRON que se asigna al entorno que recibió, pero desafortunadamente, la asignación no afecta el entorno de los comandos ejecutados a través del system o getline

awk -v q="'" '
   function escape(str) {
     gsub(q, q "\" q q, str)
     return q str q
   }
   BEGIN {
     file = "a.txt"
     system("cat " escape(file))
   }'

Por supuesto, si el archivo es "a.txt" o puede asegurarse de que su ruta nunca contenga caracteres especiales de shell, puede salirse con la suya:

system("cat " file)

Si puede asegurarse de que no contenga comillas simples, podría hacer lo siguiente:

system("cat '''" file "'''")

Linux
  1. ¿Cómo quitar el Bom de un archivo Utf-8?

  2. ¿Cómo leer una variable de un archivo?

  3. Cómo montar y desmontar un sistema de archivos en Linux

  4. Cómo crear y consultar un sistema de archivos BTRFS

  5. ¿Cómo elimino líneas nuevas de un archivo de texto?

Cómo actualizar de RHEL 7 a RHEL 8

Cómo crear directorios desde un archivo de texto en Linux

Cómo quitar la contraseña de un archivo PDF en Linux

Cómo quitar (^M) caracteres de un archivo en Linux

Cómo verificar/reparar el sistema de archivos de Linux en el arranque

Cómo reparar errores del sistema de archivos en Linux Mint