使用Bash处理JSONPath导出CSV时替换第二列逗号的问题咨询
可行实现方案
提供两种可直接落地的方案,按需选择即可:
方案1:修改oc导出逻辑,从源头避免错位(推荐)
原oc命令遗漏了-o参数,且直接拼接字段生成CSV极易因为字段内特殊字符错位,推荐用jq处理结构化JSON后导出:
# 先查询JSON结构,用jq替换message内逗号为空格后导出标准CSV oc get events -o json | jq -r '.items[] | [.name, (.message | gsub(","; " ")), .eventname] | @csv' > /tmp/test.csv
该方案直接在数据导出阶段完成处理,不需要二次加工,稳定性更高。
注:如果集群操作环境没有安装jq,直接使用方案2处理已导出的文件即可。
方案2:处理已生成的错位CSV文件
如果已经有导出的错位CSV文件,用awk按行结构处理即可:逻辑为每行第一部分是name,最后一部分是eventname,中间所有内容合并为message并把逗号替换为空格:
awk -F',' ' { name = $1 eventname = $NF message = "" for(i=2;i<=NF-1;i++){ message = message " " $i } gsub(/^ /,"",message) print name "," message "," eventname }' /tmp/raw_test.csv > /tmp/test_fixed.csv
处理后的文件完全符合预期输出格式。
内容的提问来源于stack exchange,提问作者kiran k
相关产品推荐
相关产品推荐

