Skip to content

Instantly share code, notes, and snippets.

@filipsPL
Created February 10, 2023 11:07
Show Gist options
  • Save filipsPL/4d7d9c0961d81ae87cabb514bc26159a to your computer and use it in GitHub Desktop.
Save filipsPL/4d7d9c0961d81ae87cabb514bc26159a to your computer and use it in GitHub Desktop.
bash script to split multimodel pdb file into separate files
# split-pdb-models.sh model1_1.pdb
2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102
# ls
model1_1_model_100.pdb model1_1_model_18.pdb model1_1_model_28.pdb model1_1_model_38.pdb model1_1_model_48.pdb model1_1_model_58.pdb model1_1_model_68.pdb model1_1_model_78.pdb model1_1_model_88.pdb model1_1_model_98.pdb
model1_1_model_101.pdb model1_1_model_19.pdb model1_1_model_29.pdb model1_1_model_39.pdb model1_1_model_49.pdb model1_1_model_59.pdb model1_1_model_69.pdb model1_1_model_79.pdb model1_1_model_89.pdb model1_1_model_99.pdb
model1_1_model_102.pdb model1_1_model_1.pdb model1_1_model_2.pdb model1_1_model_3.pdb model1_1_model_4.pdb model1_1_model_5.pdb model1_1_model_6.pdb model1_1_model_7.pdb model1_1_model_8.pdb model1_1_model_9.pdb
model1_1_model_10.pdb model1_1_model_20.pdb model1_1_model_30.pdb model1_1_model_40.pdb model1_1_model_50.pdb model1_1_model_60.pdb model1_1_model_70.pdb model1_1_model_80.pdb model1_1_model_90.pdb model1_1.pdb
model1_1_model_11.pdb model1_1_model_21.pdb model1_1_model_31.pdb model1_1_model_41.pdb model1_1_model_51.pdb model1_1_model_61.pdb model1_1_model_71.pdb model1_1_model_81.pdb model1_1_model_91.pdb separate_models.sh
model1_1_model_12.pdb model1_1_model_22.pdb model1_1_model_32.pdb model1_1_model_42.pdb model1_1_model_52.pdb
#!/bin/bash
# usage: split-pdb-models.sh multimodel.pdb
infile="$1"
filename=$(basename -- "$infile")
extension="${filename##*.}"
base="${filename%.*}"
i=1
while IFS= read -r line; do
printf '%s\n' "$line" >> ${base}_model_${i}.pdb
[[ ${line[0]} == ENDMDL ]] && ((i++)) && echo -ne "$i."
done < "$infile"
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment