私は次の2つのコードを持っています:
nut=`awk "/$1/{getline; print}" ids_lengths.txt`
と
grep -v '#' neco.txt |
grep -v 'seq-name' |
grep -E '(\S+\s+){13}\bAC(.)+CA\b' |
awk '$6 >= 49 { print }' |
awk '$6 <= 180 { print }' |
awk '$4 > 1 { print }' |
awk '$5 < $nut { print }' |
wc -l
この場所の「nut」をスクリプトで置き換えたいと思います。
awk '$4 < $nut { print }'
これから返される番号で:
nut=`awk "/$1/{getline; print}" ids_lengths.txt`
ただし、上記のコードの $1 は、ids_lengths.txt の列ではなく、neco.txt の最初の列を表す必要があります。(同様に、メイン コードで $6 と $4 を使用します)。
これらのネストされた awks を解決する方法のヘルプは、間違いなく高く評価されます:-)
編集: 入力ファイル (neco.txt) の行は次のようになります。
FZWTUY402JKYFZ 2 100.000 3 11 9 4.500 7 0 0 0 . TG TGTGTGTGT
最大の問題は、最初の列 (FZWTUY402JKYFZ など) で検索するときに、別のファイル (ids_lengths.txt) から取得した 5 列目の数値よりも小さい数値を持つ行をフィルター処理したいことです。そのため、ドラフトスクリプトに「nut」変数を入れました:-)
ids_lengths.txt は次のようになります。
>FZWTUY402JKYFZ
153
>FZWTUY402JXI9S
42
>FZWTUY402JMZO4
158