CSV-删除包含结构错误的数字的行



大家下午好,我将数据从示波器保存到U盘,作为点分隔的昏迷分离文件,显然在传输时出现了一些问题,导致出现了不匹配的行;通常的";数字格式。这很难解释,更容易显示:

1.788400e-04,0.008,0.006,0.008
1.788600e-04,-0.008,0.002,0.02
1.788800e-04,0.016,0.002,0
1.789200e-04,0,0.002.673200e-04,0.008,0.012,0.12
1.673400e-04,0,-0.002,0.008
1.673600e-04,0,0.01,0.012
1.673800e-04,0.008,0.002,0.008 

我的意思是第4排的0.002.673200e-04。幸运的是,它不太频繁,这样的行可以删除。然而,由于文件大约有数百万行,因此很难找到。首先,我认为找到.002.并使用删除它会很容易

grep -v ".002." testfile.csv > testfile-fixed.csv

这确实起了作用,但点之间的数字发生了变化。到目前为止,我设法找到了.000..002.,并且可能不限于这两个。

另一个变化是列的数量。

有什么简单的方法可以去掉这些线条吗?

谢谢

如果可以删除所有包含带两个点的数字的行,我建议您使用sed而不是grep

sed '/.[0-9]*./d' testfile.csv > testfile-fixed.csv

此命令删除与正则表达式.[0-9]*.匹配的行,该正则表达式与所有包含一个后面跟着0或多个数字的点以及后面跟着一个点的行匹配。

你甚至可以在文件本身内部进行更改,但如果你犯了错误,你可以销毁你的文件,所以先备份。将标志-ised:一起使用

sed -i '/.[0-9]*./d' testfile.csv

最新更新