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

如何使用bash从排序后的汽车数值文件中移除MPG值为0的条目

解决方案

你原来的代码存在两处逻辑错误,导致过滤MPG为0的条目不生效:

  • 排序后直接把结果重定向写入cconsum文件,后续管道的grep命令拿不到输入内容,同时两次写入同一个文件会导致内容损坏
  • grep -v "^0$"的匹配规则是过滤整行仅为0的内容,不符合你要过滤第二列(MPG字段)为0的需求

你只需要把脚本开头生成cconsum的那行代码替换为下面的内容即可:

tail +3 cars.csv | sort -n -k2 -t';' | awk -F ';' '$2 != 0' > cconsum

命令说明

  • awk -F ';' '$2 != 0':指定分号为字段分隔符,仅保留第二列(MPG字段)数值不等于0的行,精准过滤掉所有MPG为0的条目
  • 调整了管道和重定向的逻辑,确保排序后的内容先经过过滤再写入cconsum文件,不会出现内容丢失或损坏的问题

完整修正后的脚本参考

#!/bin/bash
tail +3 cars.csv | sort -n -k2 -t';' | awk -F ';' '$2 != 0' > cconsum

nlinies=`wc -l < cconsum`
i=1

while [ $i -le $nlinies ]
do
head -$i cconsum | tail -1 > linia
echo "Cotxe: `cut -d';' -f1 linia`"
echo "MPG: `cut -d';' -f2 linia` NºCilindres: `cut -d';' -f3 linia` Cilindrada: `cut -d';' -f4 linia`"
echo "Pòtencia: `cut -d';' -f5 linia` Pes: `cut -d';' -f6 linia` Acceleració: `cut -d';' -f7 linia`"
echo "Model de l'any: `cut -d';' -f8 linia` Origen: `cut -d';' -f9 linia`"
echo " "
i=$((i+1))
done
rm cconsum 2> /dev/null
rm linia 2>/dev/null

内容的提问来源于stack exchange,提问作者Ruth Mary Thannikuzhuppil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:08