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

批量处理ENSG前缀文件时awk脚本无输出问题求助

批量去除文件双引号的问题解决

你的循环脚本没有输出的核心原因:awk命令未指定要处理的输入文件。原脚本里的awk一直在等待标准输入,根本没有读取目标文件$i,自然不会生成任何输出内容。

修正后的脚本如下:

#!/bin/bash
#PBS -N Edit
#PBS -l walltime=01:00:00
#PBS -l nodes=1:ppn=8
#PBS -l vmem=10gb
#PBS -m bea

for i in ENSG00000*; do
    # 给awk指定输入文件$i,同时给文件名加双引号避免空格等特殊字符问题
    awk '{ gsub(/"/, ""); print }' "$i" > "$i.out"
done

额外优化建议:

  • 可以用更简洁的awk写法实现相同效果:awk -F\" '{ $1=$1 } 1' "$i" > "$i.out",原理是把双引号设为字段分隔符,重新拼接字段时会自动去除所有引号
  • 如果担心误覆盖已存在的.out文件,可添加判断逻辑:if [ ! -f "$i.out" ]; then awk '{ gsub(/"/, ""); print }' "$i" > "$i.out"; fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:55:25