grepコマンドを一連の他のコマンドと組み合わせて使用して一連の文字(fastaファイル内の「GAATTC」など)を見つけ、各一致の間に何文字があるかを計算する方法はありますか?
ベストアンサー1
入力ファイル
cat file
GAATTCXXXGAATTC
シェルを使用する(GNU grep
):
grep -oP 'GAATTC\K.*(?=GAATTC)' file | tr -d $'\n' | wc -c
3
正規表現の一致は次のとおりです。
節 | 説明する |
---|---|
GAATTC |
「GAATTC」 |
\K |
K Lookbehindアサーションを使用して、より短い代替方法で一致開始(ept)をリセットします。周りを見てくださいそして正規表現で\ Kをサポート |
.* |
\nを除くすべての文字(0回以上(最大一致)) |
(?= |
視野以下があることを確認してください。 |
GAATTC |
「GAATTC」 |
) |
プレビュー終了 |
そしてアッ:
awk -F'GAATTC' '{print length($2)}' file
3
そして真珠:
perl -nE 'say length $1 if /GAATTC(.*)GAATTC/' file
3