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

使用Bash脚本处理CSV:按时间标记时段并填充空值

Bash脚本处理CSV文件需求方案

需求说明

需要对CSV文件完成以下处理:

  • 提取时间字段的小时,若小时处于10~17区间(含10,不含18)则标记为morning,其余情况标记为night
  • 将ID列的空值替换为LOADING
  • 新增session列,输出处理后的完整CSV

输入示例

time,id
2022-08-01T00:09:14+09:00,PKA990
2022-08-01T06:48:24+09:00,PKA990
2022-08-01T08:27:23+09:00,
2022-08-01T11:04:18+09:00,ABCD890
2022-08-01T11:23:22+09:00,ABCD890
2022-08-01T11:30:14+09:00,
2022-08-01T12:01:12+09:00,ABCD890
2022-08-01T15:11:59+09:00,JIKOPL8
2022-08-01T18:20:53+09:00,TUVNDGD

期望输出

time,id,session
2022-08-01T00:09:14+09:00,PKA990,night
2022-08-01T06:48:24+09:00,PKA990,night
2022-08-01T08:27:23+09:00,LOADING,night
2022-08-01T11:04:18+09:00,ABCD890,morning
2022-08-01T11:23:22+09:00,ABCD890,morning
2022-08-01T11:30:14+09:00,LOADING,morning
2022-08-01T12:01:12+09:00,ABCD890,morning
2022-08-01T15:11:59+09:00,JIKOPL8,morning
2022-08-01T18:20:53+09:00,TUVNDGD,night

可行的Bash脚本方案

使用awk工具可高效实现需求,脚本如下:

awk -F ',' '
BEGIN {OFS = ","}
NR == 1 {print $0, "session"; next}
{
    # 替换ID列空值
    id = ($2 == "") ? "LOADING" : $2
    # 从时间字段提取小时
    split($1, time_parts, /[T:+]/)
    hour = time_parts[2]
    # 判断session类型
    session = (hour >= 10 && hour < 18) ? "morning" : "night"
    # 输出处理后的行
    print $1, id, session
}' input.csv > output.csv

脚本说明

  • BEGIN块:设置输出字段分隔符为逗号,保证输出格式符合CSV规范
  • 表头处理:第一行直接追加session字段后输出
  • ID列处理:判断第二列是否为空,空值替换为LOADING,非空则保留原值
  • 小时提取:通过split函数按T、:、+分割时间字符串,取出小时部分
  • session判断:严格匹配示例逻辑,小时在10~17区间标记为morning,其余为night
  • 输出:将处理后的字段组合输出到目标文件

使用时将input.csv替换为你的实际输入文件名,处理结果会保存到output.csv中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:25:19