AWK:すべてのプレフィックスを選択するためにフィールド($ 1)を正規表現に入れる方法は?

AWK:すべてのプレフィックスを選択するためにフィールド($ 1)を正規表現に入れる方法は?

ファイルAがあるとしましょう。

fileA 
fileB

現在、次のようなファイルがあるとしましょう。

fileA_someprefix_20160101.txt

今私は欲しいA の接頭辞が付いたすべての行に一致します。filename、従って私は考える:

FILE_NAME="fileA_someprefix_20160101.txt"    
awk '"$FILE_NAME" ~ /^$1/' A.txt

私は成功せずにドル記号を脱出するためにさまざまな方法を試しました。

すべての例では、フィールドは正規表現ではなく式(左)の一部です。

どうやっreverseて始めますか?

答え1

GNU awkを使用すると、文字列式が~

awk -v FILE_NAME="$FILE_NAME" 'FILE_NAME ~ ("^" $1)'  A.txt

答え2

awk正規表現では変数を参照できません/regex/

POSIXly プレフィックスを確認するには、index()次の関数を使用します。

FN="fileA_someprefix_20160101.txt" awk 'index(ENVIRON["FN"], $1) == 1' <file

~からPOSIX仕様awk:

索引Sティー)

1から始まる番号付き文字列の位置を文字単位で返します。Sどこに文字列ティー最初に発生するか、まったく発生しない場合は0です。

関連情報