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

Bash脚本如何读取输入文件并输出行号不能被3整除的内容行

Bash脚本输出非3倍数行号内容的解决方法

报错原因

你使用的[ ]是Bash的test命令,不支持直接在内部执行算术运算。$line_number % 3 -ne 0会被解析为4个独立参数传入test命令,超出test的参数接收规则,因此抛出too many arguments错误。

修改后的可用脚本

将if判断替换为Bash专用的算术判断语法(( ))即可,修改后的完整脚本如下:

line_number=1

while read line
do
  # 算术判断不需要加$引用变量,直接使用变量名即可
  if (( line_number % 3 != 0 ))
  then
     echo "$line"
  fi
  (( line_number++ ))
done

执行命令bash script.sh < input.txt即可得到正确结果,输出会自动跳过第3、6、9、12行的内容。

更简便的单行实现

也可以直接使用awk命令完成需求,无需编写脚本:

awk 'NR%3!=0' input.txt

其中NR为awk内置的当前行号变量,符合行号对3取余不等于0的行会被直接输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:51:01