如何更改csv文件分隔符

时间:2014-05-01 14:59:20

标签: csv awk

这是一个csv文件items.txt

item-number,item-description,item-category,cost,quantity-available

我尝试使用,将字段分隔符从\n更改为awk,我需要一种简单的方法来执行此操作。

1)此命令不起作用

awk -F, 'BEGIN{OFS="\n"} {print}' items.txt

2)这个命令有效,但我需要处理的真正的csv有15+列,我不想提供所有列变量

awk -F, 'BEGIN{OFS="\n"} {print $1,$2}' items.txt

提前致谢。

3 个答案:

答案 0 :(得分:3)

如果您的字段不包含,,则可以使用tr

tr ',' '\n' < infile > outfile

答案 1 :(得分:1)

您需要通过更改字段来获取awk来重新评估字符串。

awk -F, 'BEGIN{OFS="\n"} {$1 = $1; print}' items.txt

或者,如果您确定第一列始终为非空且非零,则可以使用稍微简单一些:

awk -F, 'BEGIN{OFS="\n"} $1 = $1' items.txt

答案 2 :(得分:1)

你很亲密。将OFS设置为换行符后,您需要重新构建字段以将它们分隔为换行符。

$1=$1重新评估字段并按OFS分隔,默认情况下为空格。由于我们将OFS设置为RS,默认情况下为新行,因此您可以获得所需的输出。

声明末尾的1是惯用的说法打印线的方式。

$ awk 'BEGIN{FS=",";OFS=RS}{$1=$1}1' file
item-number
item-description
item-category
cost
quantity-available