当前位置:  开发笔记 > 编程语言 > 正文

如何在文件中连接前n行

如何解决《如何在文件中连接前n行》经验,为你挑选了2个好方法。

我正在尝试清理一些数据,我最终想把它放在CSV格式中.

我已经使用了一些正则表达式来清理它,但我只是坚持一步.

我想用逗号替换除第三个换行符之外的所有换行符(\n).

数据如下所示:

field1
field2
field3
field1
field2
field3

等等..

我需要它

field1,field2,field3
field1,field2,field3

任何人都有一个简单的方法来使用sed或awk这样做?我可以编写一个程序并使用带有mod计数器的循环来擦除每个第1和第2个换行符,但是如果可能的话,我宁愿从命令行执行它.



1> mouviciel..:

用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的倍数就会插入逗号分隔符.在文件的末尾,如果字符串不为空,则打印字符串逗号删除.



2> ashawley..:

Awk版本:

awk '{if (NR%3==0){print $0;}else{printf "%s,", $0;}}'

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有