다음 파일을 정렬하려고 합니다.
하지만 제가 정렬하려는 부분은 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