如何将带有一行逗号分隔文本的文本文件转换为新行上每个逗号分隔字段的文件

时间:2014-01-17 03:25:14

标签: awk solaris

我正在使用旧的Sun Solaris 2.5.1。我有几行文件,带有一行逗号分隔的数据字段,我需要将它们转换为新行上的每个字段。每个文件中都有可变数量的字段。

#cat recipe1
299834,43399,PRODUCT NAME HERE,4.02,344,MORE TEXT HERE,3423 etc...

需要:

#cat recipe1
299834
43399
PRODUCT NAME HERE
4.02
344
MORE TEXT HERE
3423
etc...

4 个答案:

答案 0 :(得分:1)

所以你的意思是将逗号转换为换行符?

sed 's/,/\n/g' in.txt > out.txt

看起来旧的Solaris没有特殊的\ n序列。尝试使用真正的换行符:

sed 's/,/\
/g' in.txt > out.txt

编辑:更新为按@Ed Morton

的建议添加反斜杠

答案 1 :(得分:1)

也许:

tr ',' '\r' < in > out

答案 2 :(得分:0)

您可以使用此awk

awk '$1=$1' RS=, recipe1

但是如果文件中有0则会失败,所以最好使用:

awk '{$1=$1}1' RS=, recipe1
299834
43399
PRODUCT NAME HERE
4.02
344
MORE TEXT HERE
3423

答案 3 :(得分:0)

perl -pi -e 's/,/\n/g' your_file

PS:此命令将进行就地替换。因此,无需将输出重定向到新文件。退出文件本身将被修改。