Linux端末とGAWKで作業をしています。目的は正規表現のリストを抽出し、この表現に関連付けられた遺伝子のカウンタを作ることです。GAWKの "In in"状態です。
すべての正規表現でこれを行うようにGAWK式を設定できましたが、リストのすべての式に対してこれを実行する必要があります。
このような条件を設定する方法はありますか?If(RegExp is RegExpList)i ++ 1?
RegExpList["RegExp"] = 1;
をしてから、この文を使用します:
Linux端末とGAWKで作業をしています。目的は正規表現のリストを抽出し、この表現に関連付けられた遺伝子のカウンタを作ることです。GAWKの "In in"状態です。
すべての正規表現でこれを行うようにGAWK式を設定できましたが、リストのすべての式に対してこれを実行する必要があります。
このような条件を設定する方法はありますか?If(RegExp is RegExpList)i ++ 1?
RegExpList["RegExp"] = 1;
をしてから、この文を使用します:
あなたは配列としてRegExpListを宣言することができRegExp
ある
if(c in RegExpList){do something;}
c
場合は、条件が真となります。
参照のためgawk manualを参照してください。
答えをありがとう。実際には意味があります。問題は、ファイル入力からこれをどうやってやるかということです。 – Hjorvik
私はこのようにそれを行うために管理:
gawk 'BEGIN{i=0}
{while ((getline line < "regexpinput.txt") !=FN) RegExpList[line]=1;
if ($4 in RegExpList) i++1}
END{print i}' tabular_file.txt
おかげで助けを求め@nopasara。
awk '
NR==FNR{ re = (NR>1 ? re "|" : "") "(" $0 ")"; next }
$0 ~ re { cnt++ }
END { print cnt+0 }
' regexpinput.txt tabular_file.txt
ていますが、我々は確かに知っているよMCVEを投稿する場合:
これはgetlineを間違って使用しています(いくつかの失敗では無限ループにスピンします - http://awk.freeshell.org/AllAboutGetline参照)、表形式ファイルのすべての行についてregexpファイル全体を読み込んでいますregexpの比較とidkの代わりに文字列の比較 'i ++ 1'と解釈されますが、それは間違っています。だからあなたがしたいことは何でも、これはそうではありません。 –
チャンスはこれが正しいアプローチです。
現在のソリューションは間違ったアプローチです。簡潔でテスト可能なサンプル入力と期待される出力を含む[mcve]を投稿すると、私たちはあなたを助けることができます。あなたがawkの質問をしているなら、gawkはちょうどawkの1つのフレーバーです。なぜなら今のところ誰もあなたを訂正してくれなかったawkよりはるかに少ない人がgawkタグで質問しているからです。 –