|
PDB文件X方向平移#!/bin/bash input_file="em1-1.pdb" output_file="em1-2.pdb" LENGTH=-13 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 = "30 8 1000" # 前46位 + 8位x坐标 + 剩余内容 } { if (NR >= 5 && NR <= total - 3) { # 提取31-38位(x坐标) x_str = $2 gsub(/ /, "", x_str) # 移除所有空格
# 验证是否为数字 if (x_str ~ /^-?[0-9]+(\.[0-9]*)?$/) { x = x_str + 0 new_x = x + LENGTH
# 应用边界条件 while (new_x > MAX) { new_x -= MAX } while (new_x < MIN) { new_x += MAX # 应用周期性边界条件 }
# 格式化为标准的8.3f格式 formatted_x = sprintf("%8.3f", new_x) $2 = formatted_x } } print $1 $2 $3 }' "$input_file" > "$output_file" echo "处理完成!结果已保存至 $output_file" 上一篇PDB文件Y方向平移下一篇PDB文件Z方向平移 |