GNU/Linux >> Znalost Linux >  >> Linux

Jak vykopat soubor z Awk?

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

Chtěl bych něco takového udělat? (otevřete soubor, jehož jméno je v proměnné awk).
Jak se to dělá?

Přijatá odpověď:

Problém je v tom, že system() předává příkazový řádek shellu, takže v obecném případě musíte v názvu souboru ukončit všechny speciální znaky shellu.

awk má asociativní pole ENVIRON, které je namapováno na přijaté prostředí, ale přiřazení k němu bohužel neovlivňuje prostředí příkazů prováděných prostřednictvím system nebo 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))
   }'

Samozřejmě, pokud je soubor „a.txt“ nebo se můžete ujistit, že jeho cesta nebude nikdy obsahovat žádné speciální znaky shellu, můžete se zbavit:

system("cat " file)

Pokud se můžete ujistit, že neobsahuje jednoduché uvozovky, můžete:

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

Linux
  1. Jak odstranit Bom ze souboru UTF-8?

  2. Awk z různých řádků?

  3. Jak sloučit dva soubory pomocí AWK?

  1. Jak číst proměnnou ze souboru?

  2. Jak vytvořit soubor v Linuxu z okna terminálu?

  3. Jak převést konkrétní text ze seznamu na velká písmena?

  1. Jak připojit a odpojit souborový systém v Linuxu

  2. Jak vytvořit a dotazovat souborový systém BTRFS

  3. Jak odstraním nové řádky z textového souboru?