|
PDB文件Y方向平移#!/bin/bash input_file="em1-2.pdb" output_file="em1-3.pdb" LENGTH=-5 MAX=60 MIN=0 # 检查输入文件是否存在 if [ ! -f "$input_file" ]; then echo "错误:输入文件 $input_file 不存在" >&2 exit 1 fi # 计算文件总行数(处理最后一行无换行符的情况) total_lines=$(wc -l < "$input_file") awk -v total="$total_lines" -v LENGTH="$LENGTH" -v MAX="$MAX" -v MIN="$MIN" ' BEGIN { FIELDWIDTHS = "38 8 1000" # 前38位 + 8位7坐标 + 剩余内容 } { if (NR >= 5 && NR <= total - 3) { # 提取39-46位(x坐标) y_str = $2 gsub(/ /, "", y_str) # 移除所有空格
# 验证是否为数字 if (y_str ~ /^-?[0-9]+(\.[0-9]*)?$/) { y = y_str + 0 new_y = y + LENGTH
# 应用边界条件 while (new_y > MAX) { new_y -= MAX } while (new_y < MIN) { new_y += MAX # 应用周期性边界条件 }
# 格式化为标准的8.3f格式 formatted_y = sprintf("%8.3f", new_y) $2 = formatted_y } } print $1 $2 $3 }' "$input_file" > "$output_file" echo "处理完成!结果已保存至 $output_file" 上一篇HMT-PMBI下一篇PDB文件X方向平移 |