У меня есть файлы в следующем формате:
ATOM 8962 CA VAL W 8 8.647 81.467 25.656 1.00115.78 C
ATOM 8963 C VAL W 8 10.053 80.963 25.506 1.00114.60 C
ATOM 8964 O VAL W 8 10.636 80.422 26.442 1.00114.53 O
ATOM 8965 CB VAL W 8 7.643 80.389 25.325 1.00115.67 C
ATOM 8966 CG1 VAL W 8 6.476 80.508 26.249 1.00115.54 C
ATOM 8967 CG2 VAL W 8 7.174 80.526 23.886 1.00115.26 C
ATOM 4440 O TYR S 89 4.530 166.005 -14.543 1.00 95.76 O
ATOM 4441 CB TYR S 89 2.847 168.812 -13.864 1.00 96.31 C
ATOM 4442 CG TYR S 89 3.887 169.413 -14.756 1.00 98.43 C
ATOM 4443 CD1 TYR S 89 3.515 170.073 -15.932 1.00100.05 C
ATOM 4444 CD2 TYR S 89 5.251 169.308 -14.451 1.00100.50 C
ATOM 4445 CE1 TYR S 89 4.464 170.642 -16.779 1.00100.70 C
ATOM 4446 CE2 TYR S 89 6.219 169.868 -15.298 1.00101.40 C
ATOM 4447 CZ TYR S 89 5.811 170.535 -16.464 1.00100.46 C
ATOM 4448 OH TYR S 89 6.736 171.094 -17.321 1.00100.20 O
ATOM 4449 N LEU S 90 3.944 166.393 -12.414 1.00 94.95 N
ATOM 4450 CA LEU S 90 5.079 165.622 -11.914 1.00 94.44 C
ATOM 5151 N LEU W 8 -66.068 209.785 -11.037 1.00117.44 N
ATOM 5152 CA LEU W 8 -64.800 210.035 -10.384 1.00116.52 C
ATOM 5153 C LEU W 8 -64.177 208.641 -10.198 1.00116.71 C
ATOM 5154 O LEU W 8 -64.513 207.944 -9.241 1.00116.99 O
ATOM 5155 CB LEU W 8 -65.086 210.682 -9.033 1.00115.76 C
ATOM 5156 CG LEU W 8 -64.274 211.829 -8.478 1.00113.89 C
ATOM 5157 CD1 LEU W 8 -64.528 211.857 -7.006 1.00111.94 C
ATOM 5158 CD2 LEU W 8 -62.828 211.612 -8.739 1.00112.96 C
В принципе, столбец 5 (W, в данном случае, который представляет идентификатор цепи) должен быть идентичен только в последовательных фрагментах. Однако в файлах со слишком большим количеством цепочек недостаточно букв алфавита, чтобы присвоить один идентификатор каждой цепочке, и, следовательно, может возникнуть двуличие.
Я бы хотел проверить, так ли это на самом деле. Другими словами, я хотел бы знать, присутствует ли данный идентификатор цепочки (A-Z, всегда в 5-м столбце) в непоследовательных фрагментах. Я не против, если он изменится с W на S, я хотел бы знать, есть ли два куска, имеющих один и тот же идентификатор цепи. В этом случае, если W или S появятся в какой-то момент. На самом деле, это проблема, только если они разделяют первый и шестой столбцы, но я не хочу слишком усложнять ситуацию.
Я не хочу печатать строки, просто чтобы узнать имя файла, в котором возникает проблема, и идентификатор цепи (в данном случае W), чтобы решить проблему. На самом деле, я уже знаю, как решить проблему, но мне нужно определить проблемные файлы, чтобы сосредоточиться на них, а не восстанавливать уже исправленные файлы.
РЕШЕНИЕ (спасибо всем за помощь, а именно сэхэ):
for pdb in $(ls *.pdb) ; do
hit=$(awk -v pdb="$pdb" '{ if ( $1 == "ATOM" ) { print $0 } }' $pdb | cut -c22-23 | uniq | sort | uniq -dc)
[ "$hit" ] && echo $pdb = $hit
done