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

提取.txt文件特定字段的Bash脚本需求:唯一stop_id及坐标

提取CSV文件中唯一stop_id及对应坐标的Bash脚本(附新手友好解释)

需求说明

你有一个约4000条记录的CSV格式.txt文件,首行为表头,需要提取所有唯一的stop_id,并输出对应的坐标(格式如(21.261225, -157.818181))。下面是针对Bash新手的脚本和详细语法解释:

完整脚本

假设你的文件名为stops.txt,执行以下命令即可:

tail -n +2 stops.txt | awk -F ',' '{print $1 "," $5 "," $6}' | sort -u | awk -F ',' '{print $1 ": (" $2 ", " $3 ")"}'

逐命令详细解释

这是一条管道串联的命令,每个步骤负责一部分工作:

  • tail -n +2 stops.txt
    作用:跳过文件的首行表头,从第二行开始输出所有数据行。
    语法解释:

    • tail:用于查看文件末尾内容的基础命令;
    • -n +2:指定从第2行开始显示后续所有行,直接过滤掉不需要的表头行。
  • awk -F ',' '{print $1 "," $5 "," $6}'
    作用:以逗号为分隔符,提取每行的stop_id(第1列)、stop_lat(第5列)、stop_lon(第6列)三个字段。
    语法解释:

    • awk:处理结构化文本的强大工具,擅长按列提取内容;
    • -F ',':指定CSV文件的分隔符为逗号;
    • {print $1 "," $5 "," $6}:输出第1、5、6列,列之间用逗号分隔,把我们需要的核心字段单独筛选出来。
  • sort -u
    作用:对提取后的内容排序,并自动去除重复的stop_id记录。
    语法解释:

    • sort:对文本行进行排序;
    • -u:全称--unique,排序后自动删除重复的行,确保每个stop_id只保留一条对应坐标的记录。
  • awk -F ',' '{print $1 ": (" $2 ", " $3 ")"}'
    作用:把提取的字段格式化成符合要求的样式。
    语法解释:
    再次使用awk,以逗号为分隔符,将第1列(stop_id)、第2列(纬度)、第3列(经度)拼接成stop_id: (纬度, 经度)的格式,满足坐标的展示需求。

注意事项

如果你的文件名不是stops.txt,直接将命令中的文件名替换为实际文件名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:15:13