이름 필드별로 정렬하시겠습니까?

이름 필드별로 정렬하시겠습니까?

다음 파일을 정렬하려고 합니다.

http://pastebin.com/EqA2SUMy.

하지만 제가 정렬하려는 부분은 11개 필드이고 첫 번째 필드가 원자인 경우에만 해당됩니다. 이것은 예이다

  ATOM     33  CG  ASP A 438       8.283  24.407 131.412  1.00 17.18           C  
 ATOM     34  OD1 ASP A 438       9.153  23.597 131.783  1.00 17.73           O  
 ATOM     35  OD2 ASP A 438       7.530  25.009 132.208  1.00 18.39           O  
 ATOM     36  N   PHE A 439       5.102  23.813 128.903  1.00 12.35           N  
 ATOM     37  CA  PHE A 439       3.680  23.598 129.138  1.00 12.15           C  

필드를 기준으로 파일을 정렬하는 방법을 알고 있습니다. 예를 들어 내 파일의 경우 다음과 같습니다.

            sort -k11 <\file path >

11번째 필드를 기준으로 정렬하지만 첫 번째 필드가 원자인 경우에만 정렬하는 방법 b/c 일부 필드는 11로 이동하고 HETATM 등으로 시작합니다.

답변1

이것이 효과가 있을 것입니다. 제가 올바르게 이해했다면 .로 시작하는 줄만 있으면 됩니다 ATOM.

sort -k11 <(awk '$1 ~ /ATOM/' file)

설명하다:

  • sort -k11: 11번째 필드 기준으로 정렬
  • awk '$1 ~ /ATOM/' file:다음으로 시작하는 필드만 인쇄ATOM
  • 이 부분은 이 부분 awk의 입력 입니다.sort

답변2

최종 결과가 어떻게 되기를 바라나요? 첫 번째 필드 ATOM의 모든 행이 파일 상단, 파일 끝 부분에 나타나야 합니까?

ATOM을 목록의 어느 위치에나 배치할 수 있는 경우 가능한 한 가지 방법은 이를 다른 파일로 정렬하여 원본 파일의 상단이나 하단 또는 특정 열에 추가하는 것입니다. 나는 다른 누군가가 더 간단한 해결책을 게시할 것이라고 확신합니다. 지금은 2센트뿐입니다.

grep -v ^ATOM file > result; sort -k11 < grep ^ATOM file >> result

관련 정보