#!/bin/bash
filename='coor.pdb'
echo Start
i=1
input=false
while read -r line
do
if [ "${line%% *}" == "ATOM" ]
then
input=true
elif [ "${line%% *}" == "END" ]
then
((i++)) # increase variable i by 1 == (i+1)
rm -f "${i}_frame.data" # remove ${i}_frame.data" if exist
input=false # stop output lines until next ATOM
fi
if $input # if var INPUT is true add line to ${i}_frame.data file
then
echo "$line" >> "${i}_frame.data"
fi
done < "$filename"
На будущее некоторые подсказки sed :
sed '/ATOM/,/END/!d;/END/d'
sed -n '/ATOM/{:;N;s/\nEND//;T;p}'
Итак, вы можете выполнить задачу:
nl -s'.frame.data' -b p"^END" coor.pdb |
sed -n '/ATOM/{s/^/echo \"/;:;s/ \{6,\}//;N;s/END//;T;s/\n */\">/p}' |
bash