微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-用awk清理csv文件的头

我有一堆的csv文件看起来像这样:

Time,Channel A
(s),(V)

0.00000000,0.58058560
0.00666667,0.58913630
0.01333334,0.58058560

我想将其转换为:

Time (s),Channel A (V)
0.00000000,0.58058560
0.00666667,0.58913630
0.01333334,0.58058560

文件的单位不一定相同(即可能有(ms),(µV)等)

我可以用awk’FNR!= 3’删除空白行(始终是第3行),但是剪切第二行参数并将其粘贴到第一行字段的后面是我的能力;

请帮帮我!
动机:这些文件很多.手工做是不可行的……

编辑:
首先:感谢您的帮助.由于您的两个答案似乎存在相同的问题,因此我的文件中可能存在问题?我怀疑空行会以某种方式引起麻烦?

> shell脚本给我错误’预期空行,请读’
> perl脚本和awk脚本给我错误的第一行:

 (V) (s),Channel A
0.00000000,0.58058560

如果有帮助,则为I uploaded a sample infile.

解决方法:

您可以改用perl

perl -lpe 'if($.==1){$x=<>;($T,$C)=$x=~/(\([^\)]\))/g;s/[^,]+\K,.*/ $T$& $C/;<>}' file

Time (s),Channel A (V)
0.00000000,0.58058560
0.00666667,0.58913630
0.01333334,0.58058560

如果您有CRLF文件,看起来就像您一样.

perl -lpe 'chop;if($.==1){$x=<>;($T,$C)=$x=~/(\([^\)]\))/g;s/[^,]+\K,.*/ $T$& $C/;<>}' file

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐