You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下.star格式转换脚本运行报错及输出异常问题求助

问题1:脚本语法报错+文件名末尾带问号修复

该问题是由于脚本换行符为Windows格式\r\n导致,Linux系统仅识别\n作为换行符:

  • 多余的\r字符被识别为普通文件名后缀,显示为问号
  • Shell无法正常识别脚本行结束标记,触发语法错误

执行以下命令转换脚本换行格式即可:

# 若已安装dos2unix直接用
dos2unix ./script.sh

# 未安装dos2unix用sed转换
sed -i 's/\r$//' ./script.sh

问题2:输出文件仅含头部无数据修复

换行格式修正后如果仍无数据,按以下步骤排查:

  • 先验证目标路径是否存在.star文件,执行命令:
    ls /data/CRYOSPARC/cryolo/full_data/STAR/*.star
    
    若提示找不到文件,将脚本内的路径替换为.star文件实际存放路径即可
  • 原脚本awk逻辑NF>3是正确的,刚好可以跳过头部行只输出数据行,无需修改

优化后稳定版本脚本

#!/bin/bash
# 写入输出文件头部
cat > ../picks.star <<EOF
data_

loop_
_rlnMicrographName #1
_rlnCoordinateX #2
_rlnCoordinateY #3

EOF

# 遍历提取数据
for file in /data/CRYOSPARC/cryolo/full_data/STAR/*.star; do
    # 跳过通配符未匹配到文件的异常情况
    [ -f "$file" ] || continue
    # 如果需要保留文件全路径,把下面的fname替换成$file即可
    fname=$(basename "$file")
    awk -v f="$fname" 'NF>3 {print f"\t"$1"\t"$2}' "$file" >> ../picks.star
done

内容的提问来源于stack exchange,提问作者Omid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:36:07