数値の範囲を見つけるための Grep

数値の範囲を見つけるための Grep

アミノ酸と残留データを提供する複数の行を含む.txtファイルがあります。データは次のとおりです。

ARG262-Side ASP368-Side 140,83%
ARG95-Side GLU107-Side 103,73%
ARG474-Side VAL468-Main 94,93%
PHE169-Main ALA190-Main 94,63%
THR205-Side ASP203-Side 94,07%
ILE299-Main LYS249-Main 94%
LEU354-Main LYS365-Main 93,6%
ARG346-Side GLU263-Side 93,57%
LEU301-Main ALA247-Main 93,43%
ALA190-Main PHE169-Main 93,37%
SER252-Side ASP296-Side 93,1%
TYR424-Side ASN446-Main 93%

数字は残基を表し、文字はアミノ酸を表すと大まかに言うことができる。したがって、各行の第1および第2のフィールドにおいて、前の部分は-アミノ酸識別子および残基値から構成される。アミノ酸に関係なく、最初のフィールドまたは2番目のフィールドが基準を満たすかどうかにかかわらず、目に見える残差が特定の範囲内にある行のみを印刷したいと思います。

たとえば、上記の入力ファイルから次の残りの部分だけを含むデータを抽出したいとします。300-425。この場合、私の出力は次のようになります。

ARG262-Side ASP368-Side 140,83%
LEU354-Main LYS365-Main 93,6%
ARG346-Side GLU263-Side 93,57%
LEU301-Main ALA247-Main 93,43%
TYR424-Side ASN446-Main 93%

私はこのgrepコマンドを使用して多くの成功を収めませんでした。これ以外に使用できるコマンドはありますかgrep

ベストアンサー1

使用awk:

awk -F'(^| )...|-' '$2>300 && $2<425 || $4>300 && $4<425' infile

ここでは、フィールド区切り文字を次のように設定します。

  • 行の先頭の後に3つの文字が続きます^...。または
  • スペースの後に3つの文字が続きます ...。または
  • ハイフン

これに基づいて、2列と4列がアミノ酸の残基であるため、与えられた範囲内にあることを確認します。

おすすめ記事