GNU/Linux >> Linux の 問題 >  >> Linux

Awkからファイルをキャットする方法は?

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

そんなことしたいの? (名前がawk変数にあるファイルを開きます。)
どのように実行されますか?

承認された回答:

問題は、system()がコマンドラインをシェルに渡すことです。そのため、一般的なケースでは、ファイル名に含まれるすべてのシェル特殊文字をエスケープする必要があります。

awkには、受け取った環境にマップされたENVIRON連想配列がありますが、残念ながら、それに割り当てても、systemを介して実行されるコマンドの環境には影響しません。 または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))
   }'

もちろん、ファイルが「a.txt」である場合、またはそのパスにシェルの特殊文字が含まれないようにすることができる場合は、次の方法で対処できます。

system("cat " file)

一重引用符が含まれていないことを確認できる場合は、次のようにすることができます。

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

Linux
  1. ファイルから変数を読み取る方法は?

  2. Linux でファイルシステムをマウントおよびアンマウントする方法

  3. BTRFS ファイル システムを作成してクエリを実行する方法

  1. テキスト ファイルから改行を削除するにはどうすればよいですか?

  2. ターミナルウィンドウからLinuxでファイルを作成するには?

  3. install -c は cp とどう違うのですか

  1. Utf-8ファイルからBOMを削除する方法は?

  2. 別の行からのAWK?

  3. AWK を使用して 2 つのファイルをマージする方法は?