
うまく動作する次のAWKコマンドがあります。
awk -v RS="\n+?[$]{4}\n+?" '/HMDB0000008/' test.xt
しかし、私が望むのは、コマンドラインから呼び出して引数を渡して、私が望むものを見つけるのを助けることです。
たとえば、次のようになります。
awk -f var=HMDB0000008 RS="\n+?[$]{4}\n+?" '/$var/' test.txt
しかし、これはうまくいかないようです。最良の方法が何であるかを教えてください。
ありがとう
答え1
awk は変数の拡張には使用されず、$
さらに -f ではなく -v オプションとともに渡されます。また、内部文字列は/.../
正規表現パターンとして扱われるため、~
行全体()で$0
パターン一致演算子を使用する必要があります。
awk -v var=HMDB0000008 -v RS="\n+?[$]{4}\n+?" '$0 ~ var' test.txt