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

在for循环中使用awk打印指定行的某列无输出,求技术帮助

问题排查与解决

首先你的代码核心问题是拼写错误:awk语句里把print写成了ptint,这直接导致awk无法执行打印操作,所以没有任何输出。

修正后的原循环代码

把拼写错误修正后,你的代码就能正常输出预期结果:

for i in {3..5};do
    awk -F " " -v var=$i 'FNR==var {print $1}' sfs_file.new.txt
done

更高效的优化方案

不需要用shell循环多次调用awk(每次调用都要重新读取一次文件,效率较低),可以直接用awk一次性处理所有目标行:

# 匹配行号3到5的范围
awk 'FNR>=3 && FNR<=5 {print $1}' sfs_file.new.txt

# 或者精准指定单个行号
awk 'FNR==3 || FNR==4 || FNR==5 {print $1}' sfs_file.new.txt

执行后会直接输出符合预期的结果:

65
71
58

这种写法只需要读取一次文件,比循环调用awk的效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:57:16