二重引用符でawkを使用するときにパターンを否定する方法

二重引用符でawkを使用するときにパターンを否定する方法

次のファイルがあります。

$ cat files
foo.txt
bar.js

bash awkを使用して.js

awkは一重引用符を使用するとうまく機能します。

$ awk '$1 !~ /.js$/ {print $1}' files
foo.txt

ただし、二重引用符 awk を使用する場合:

$ awk "\$1 !~ /.js$/ {print \$1}" files
-bash: !~: event not found

ベストアンサー1

しないでください。

単純な変数パラメータの使用:

$ awk -v exclude='\.js$' '$1 !~ exclude' file
foo.txt

または、環境を介してスキーマをインポートします(含まれているスキーマをサポートする便利な方法\\)。

$ exclude='\.js$' awk '$1 !~ ENVIRON["exclude"]' file

コメントで述べたように(現在削除済み):

$ awk "\$1 !""~ /.js$/ {print \$1}" file

うまくいくかもしれませんが、いいえ推奨される方法です。ただ簡単です。 醜い。使い方を学ぶ正しい方法。

おすすめ記事