저는 현재 단백질의 원자 거리에 대한 파일을 작업하고 있습니다. 거리는 동일한 잔기 내에 있거나 다른 잔기 사이에 있습니다. 동일한 잔여물에 거리가 포함된 모든 선을 정렬/찾아 개별적으로 사용할 새 파일에 선을 쉽게 복사할 수 있는 방법이 있는지 궁금합니다. 이 파일의 예는 동일한 잔기(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 !
두 항목 사이의 잔기가 동일하기 때문입니다.
답변1
한 줄에 동일한 패턴을 두 번 일치시키려면 다음을 사용할 수 있습니다.역참조그룹을 캡처하려면
전임자.
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