正規表現のためのawkとegrep

正規表現のためのawkとegrep

私はUnixに初めて触れました!

fastqファイルに3つ以上のAsが連続して含まれる読み取り数は何ですか?

egrep 'A{3}' を使用して、AAA が何人かを教えてくれます。しかし今はAAA連続3つ以上を知りたいです。ただし、> =は機能しません。これを決定するためにawkを使用できますか?

また、正規表現を使用して4つ以上のAの後にT以外の項目がある読み取り数を確認するにはどうすればよいですか? (GCまたはA)したがって、Aは> = 4でなければならず、次にGCorAになる必要があります。

編集:連続して3Aと言うと、次のような意味です。 GGCTAAAAAACGGAT

ベストアンサー1

3つ以上の場合は、次のものをa使用できますa{3,}。たとえば、

$ echo a | grep -E 'a{3,}'
$ echo aa | grep -E 'a{3,}'
$ echo aaa | grep -E 'a{3,}'
aaa
$ echo aaaa | grep -E 'a{3,}'
aaaa
$ echo aaaaaaaaaa | grep -E 'a{3,}'
aaaaaaaaaa

3つ以上のasの後にa以外の項目がある場合は、次のようにt使用できます。a{3,}[^t]

$ echo aaa | grep -E 'a{3,}[^t]'
$ echo aaat | grep -E 'a{3,}[^t]'
$ echo aaax | grep -E 'a{3,}[^t]'
aaax

ただし、anはaaではないtため、 'aaaa'などの項目と一致し、その後aにa以外の文字が続きますt(この場合a)。

$ echo aaaa | grep -E 'a{3,}[^t]'
aaaa

a文字列がisでもなくisでもないで終わるようにするには、次のようにしtますa{3,}[^at]。たとえば、

$ echo aaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaattt | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaab | grep -E 'a{3,}[^ta]'
aaaaaaaab

おすすめ記事