首页 > 解决方案 > 将 3 列合并为 1

问题描述

我有 1 个包含 16 列的 csv 文件,如下所示:

WEB QUEST|Lazaro|Martinez|0|Consultor de ventas|Mexico|DF|55457110|55450327|53445299|0|05/10/1999|0|0|0

我尝试将 3 列与 awk 和 sed 合并,但由于某种原因,我仍然没有得到想要的输出:

WEB QUEST|Lazaro Martinez 0|Consultor de ventas|Mexico|DF|55457110|55450327|53445299|0|05/10/1999|0|0|0

当我尝试awk -F "|" '{print $1,"|"$2,$3,$4,"|"$5...}'

出于某种原因,每个 | 中都添加了一些空格。这是我得到的输出

EB QUEST |Maria Valencia Loza |Consultor de ventas | Mexico |DF | 55457110 | 55450327 | 4003071 | evalencia@webquest.com.mx | 05/10/1999 | 0 |0 |0

有任何想法吗 ?

标签: linuxbashawksed

解决方案


awk 中的逗号print添加了一个字段分隔符OFS。要简单地连接字符串,请省略逗号。

awk -F "|" '{print $1 "|" $2 $3 $4 "|" $5...}'

可能更好的方法是设置OFS="|"并简单地移出第三个和第四个字段,如Is there a way to fully delete fields in awk, so extra delimiters don't print?


推荐阅读