GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich eine Datei von Awk kategorisieren?

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

Ich möchte so etwas tun? (Öffnen Sie eine Datei, deren Name in einer awk-Variablen steht).
Wie wird das gemacht?

Akzeptierte Antwort:

Das Problem besteht darin, dass system() die Befehlszeile an eine Shell übergibt, sodass Sie im Allgemeinen alle Shell-Sonderzeichen im Namen der Datei maskieren müssen.

awk hat ein assoziatives ENVIRON-Array, das auf die empfangene Umgebung abgebildet wird, aber leider hat die Zuweisung keine Auswirkung auf die Umgebung der Befehle, die über system ausgeführt werden oder 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))
   }'

Wenn die Datei „a.txt“ ist oder Sie sicherstellen können, dass ihr Pfad niemals Shell-Sonderzeichen enthält, können Sie natürlich mit:

davonkommen
system("cat " file)

Wenn Sie sicherstellen können, dass es keine einfachen Anführungszeichen enthält, können Sie Folgendes tun:

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

Linux
  1. Wie entferne ich die Bom aus einer UTF-8-Datei?

  2. Wie kann man zwei Dateien mit AWK zusammenführen?

  3. Wie erstelle ich eine Datei in Linux aus dem Terminalfenster?

  4. Wie leitet man die Ausgabe von system() in eine Datei um?

  5. Wie unterscheidet sich install -c von cp

So aktualisieren Sie von RHEL 7 auf RHEL 8

So erstellen Sie Verzeichnisse aus einer Textdatei unter Linux

So entfernen Sie ein Passwort aus einer PDF-Datei unter Linux

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So überprüfen/reparieren Sie das Linux-Dateisystem beim Booten

So reparieren Sie Dateisystemfehler in Linux Mint