Linux grep - 同じ番号を含む行を検索する

Linux grep - 同じ番号を含む行を検索する

私は現在、タンパク質の原子距離のファイルを扱っています。距離は同じ残基内にあるか、異なる残基の間にある。同じ残留物に距離を含むすべての線を並べ替え/検索して、個々に使用する新しいファイルに線を簡単にコピーする方法があるかどうか疑問に思います。このファイルの例は、同じ残基(164)内の距離と異なる残基(38、124)との間の距離の両方について以下に示されています。

サンプル入力は次のとおりです。

assign (resid 164 and name CD ) (resid 164 and name CE ) 4.6 2.6 2.6 ! 
assign (resid 38 and name CE* ) (resid 124 and name CA ) 4.6 2.6 2.6 ! 

...出力は次のようになります。

assign (resid 164 and name CD ) (resid 164 and name CE ) 4.6 2.6 2.6 ! 

2つの項目間の残基が同じであるためです。

答え1

1行に同じパターンを2回一致させるには、次のようにします。逆参照グループをキャプチャするには

前任者。

grep -E '(resid [0-9]+ ).*\1'

または

grep -E 'resid ([0-9]+ ).*resid \1'

答え2

awk '$3 == $9' yourfile

一致する残りの行が表示されます。一致しない残差のある行を取得するには、に==変更します!=

答え3

特定のファイルのグループ化出力を含む@ottomeisterコードの恥ずかしい拡張

awk '{if ($3 <= $9) {print $0 >> $3"."$9".resid"} else { print $0 >> $9"."$3".resid"}}' data

関連情報