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

如何用GNU/Linux Shell脚本修改CSV指定列的日期缩写

GNU/Linux Shell脚本实现CSV第18列格式转换

可以用awk工具完成这个需求,它能精准定位CSV的指定列并执行字符串替换,适合处理这类结构化文本操作:

awk -F';' -v OFS=';' '{
    # 替换星期缩写
    gsub(/Tu/, "Di", $18);
    gsub(/We/, "Mi", $18);
    gsub(/Th/, "Do", $18);
    gsub(/Su/, "So", $18);
    # 替换PH off为德语节假日关闭文本
    gsub(/PH off/, "Feiertag geschlossen", $18);
    # 输出整行内容
    print $0
}' input.csv > output.csv

脚本说明

  • -F';':指定输入的字段分隔符为分号
  • -v OFS=';':指定输出的字段分隔符为分号,保证输出格式和原CSV一致
  • gsub(/匹配规则/, "替换内容", $18):仅对第18列执行全局替换操作,不会影响其他列的内容

使用方式

  1. 将上述脚本保存为convert_opening_hours.sh
  2. 给脚本添加执行权限:chmod +x convert_opening_hours.sh
  3. 运行脚本处理目标CSV:./convert_opening_hours.sh

如果需要原地修改原文件,可以结合sponge工具(需先安装moreutils包):

awk -F';' -v OFS=';' '{
    gsub(/Tu/, "Di", $18);
    gsub(/We/, "Mi", $18);
    gsub(/Th/, "Do", $18);
    gsub(/Su/, "So", $18);
    gsub(/PH off/, "Feiertag geschlossen", $18);
    print $0
}' input.csv | sponge input.csv

注意事项

  • 假设CSV的第18列没有嵌套的分号(普通OSM导出的CSV通常不会存在这种情况,若有则需要更复杂的CSV解析逻辑)
  • 替换操作是全局匹配,若需要仅替换独立的星期缩写(避免误替换单词内的字符),可将正则调整为/\bTu\b/这类带单词边界的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:56:00