grep検索間の文字数の計算

grep検索間の文字数の計算

grepコマンドを一連の他のコマンドと組み合わせて使用​​して一連の文字(fastaファイル内の「GAATTC」など)を見つけ、各一致の間に何文字があるかを計算する方法はありますか?

答え1

入力ファイル

cat file
GAATTCXXXGAATTC

シェルを使用する(GNU grep):

grep -oP 'GAATTC\K.*(?=GAATTC)' file | tr -d $'\n' | wc -c
3

正規表現の一致は次のとおりです。

説明する
GAATTC 「GAATTC」
\K KLookbehindアサーションを使用して、より短い代替方法で一致開始(ept)をリセットします。周りを見てくださいそして正規表現で\ Kをサポート
.* \nを除くすべての文字(0回以上(最大一致))
(?= 視野以下があることを確認してください。
GAATTC 「GAATTC」
) プレビュー終了

そして:

awk -F'GAATTC' '{print length($2)}' file
3

そして:

perl -nE 'say length $1 if /GAATTC(.*)GAATTC/' file
3

関連情報