Следующая строка с одним выражением awk позволяет мне разбить файл по символу в позиции 22:
awk -v pdb="${file}" -F "" '{close(c);c=$22}{print > pdb"_"c".pdb"}' ${file}.1tmp
Мои файлы имеют тип:
ATOM 8911 N SER W 1 -5.412 94.401 12.569 1.00137.46 N
ATOM 8912 CA SER W 1 -4.093 93.709 12.370 1.00137.35 C
ATOM 8913 C SER W 1 -3.115 93.771 13.604 1.00137.27 C
ATOM 8914 O SER W 1 -2.023 93.177 13.570 1.00137.22 O
ATOM 8915 CB SER W 1 -3.417 94.212 11.063 1.00137.29 C
ATOM 1 N ASP X 7 70.244 176.432 -72.598 1.00121.87 N
ATOM 2 CA ASP X 7 70.164 177.938 -72.649 1.00122.11 C
ATOM 3 C ASP X 7 68.705 178.495 -72.843 1.00121.38 C
ATOM 4 O ASP X 7 68.482 179.724 -72.941 1.00121.16 O
ATOM 5 CB ASP X 7 71.128 178.442 -73.745 1.00122.87 C
ATOM 5143 N ASP W 7 -68.623 209.141 -11.831 1.00118.10 N
ATOM 5144 CA ASP W 7 -67.698 209.756 -12.845 1.00118.36 C
ATOM 5145 C ASP W 7 -66.378 210.288 -12.223 1.00118.02 C
ATOM 5146 O ASP W 7 -65.657 211.116 -12.802 1.00118.06 O
ATOM 5147 CB ASP W 7 -68.436 210.840 -13.657 1.00118.67 C
Однако,скрипт копирует все строки с буквой W в 22-й позиции в одном и том же файле, даже если они находятся в несмежных блоках.Я хотел бы разбить файл на блоки так, чтобы первый смежный блок, содержащий W (или любой другой символ), был назван W1, а второй W2 и так далее.Может ли это быть легко сделано с помощью awk, или я должен пойти на цикл со счетчиком или что-то в этом роде?