awk输出存在多余换行:从Elasticsearch索引数据生成指定格式CSV的命令问题排查
问题分析与解决:Elasticsearch数据转CSV命令换行问题
嘿,我来帮你搞定这个多余换行的问题!你遇到的问题根源其实很直白:你的awk命令里用了两个独立的print语句,第一个print a[1]会单独输出一行,第二个print才输出后续内容,自然就出现了不必要的换行。
修正后的命令
直接把所有需要输出的内容合并到同一个print语句里,就能生成你想要的连续行格式:
cat filename | grep " 78_" | sort -k 3 | awk '{split($3,a,"_"); split($3,b,"-"); print a[1] "," $3 "," b[2] "," $5 "," $6 "," $10}'
命令细节解释
- 第一个
split($3,a,"_"):把索引名字段按下划线拆分,a[1]就是你需要的前缀78 - 第二个
split($3,b,"-"):把索引名字段按连字符拆分,b[2]就是提取出的日期部分 - 把所有目标字段用逗号拼接后一次性通过
print输出,彻底避免了拆分输出导致的换行
执行这个修正后的命令,输出就会和你期望的格式完全匹配:
78,78_data_store-2021.11.26,2021.11.26,1,1,478.2mb
78,78_data_store-2021.12.12,2021.12.12,1,1,4.1gb
78,78_data_store-2021.12.24,2021.12.24,1,1,372.6mb
内容的提问来源于stack exchange,提问作者Sagar Vaghela
相关产品推荐
相关产品推荐

