这是一个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
提前致谢。
答案 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