如何使用awk将带双引号的逗号分隔符转换为制表符分隔符

问题描述 投票:0回答:2

我正在使用下面的 awk 命令,但数据分为多行,因为字符串字段包含 , 。
输入 csv 文件 输出制表符分隔符

awk 'BEGIN{FS = "," ; -v OFS = "\t" ; } {$1 = $1}1 ' input > output

输入:

field1 , field 2,field3 
abc,"xyz,abc",MNC

输出

Field 1  FIELD 2    FIELD 3
abc       xyz,abc    MNC

如有任何帮助,我们将不胜感激

awk sed tr
2个回答
0
投票

FPAT
中使用
gnu-awk
你可以这样做:

awk -v OFS='\t' -v FPAT='"[^"]*"|[^,"]+' '{$1=$1} 1' input

field1   field 2    field3
abc "xyz,abc"   MNC

0
投票

您可以使用mlr

mlr --c2t cat file

或者红宝石:

ruby -r csv -e 'CSV.parse($<.read).each{|row| puts row.join("\t")}' file 

任一打印:

field1   field 2    field3 
abc xyz,abc MNC
© www.soinside.com 2019 - 2024. All rights reserved.