我正在尝试清理一些数据,我最终想把它放在CSV格式中.
我已经使用了一些正则表达式来清理它,但我只是坚持一步.
我想用逗号替换除第三个换行符之外的所有换行符(\n).
数据如下所示:
field1 field2 field3 field1 field2 field3
等等..
我需要它
field1,field2,field3 field1,field2,field3
任何人都有一个简单的方法来使用sed或awk这样做?我可以编写一个程序并使用带有mod计数器的循环来擦除每个第1和第2个换行符,但是如果可能的话,我宁愿从命令行执行它.
用awk:
awk '{n2=n1;n1=n;n=$0;if(NR%3==0){printf"%s,%s,%s\n",n2,n1,n}}' yourData.txt
此脚本保存最后三行并在每三行打印它们.不幸的是,这仅适用于具有3行多个的文件.
更通用的脚本是:
awk '{l=l$0;if(NR%3==0){print l;l=""}else{l=l","}}END{if(l!=""){print substr(l,1,length(l)-1)}}' yourData.txt
在这种情况下,最后三行连接在一个字符串中,只要行号不是3的倍数就会插入逗号分隔符.在文件的末尾,如果字符串不为空,则打印字符串逗号删除.
Awk版本:
awk '{if (NR%3==0){print $0;}else{printf "%s,", $0;}}'