从 csv 中删除非数字行

从 csv 中删除非数字行

我曾经sed只允许数字和 csv 格式,我用作sed '/[^0-9, -, .]/d'正则表达式。它仍然具有"_","1-0","1-1"让我担心的o/p 特征。

sed 's/'"$(printf '\015')"'//g' ./abc.CSV | sed '/[^0-9, -, .]/d' 
1,090216002122,128,126,134,124,-0,00,220,28,292688,077,040911,0858,0159
1,090216002123,128,126,134,124, 000,00,_220,28,292688,077,040911,0858,0159
1,090216002125,128,126,134,124, 000,00,220,28,292688,077,040911,0858,170
1,090216002126,128,126,134,124, 000,-.00,220,28,292688,077,040911,0858,0159
1,090216002130,128,126,134,124, 000,00,220,28,292688,077,040911,0858,   
1,090216002134,128,126,134,124, 000,00,220,28,,077,040911,0858,0159
1,090216002135,128,126,134,124, 000,00,220,28,077,040911,0858,0159
11,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1-1,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1,000000000000,000,0,0,0,0,0,0,0,0,0,0,0,0
1,040216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0159
1,090216002137,128,126,134,124, 000,00,220,28,292688,077,040911,0858,0-1

我尝试过($9 ~ /^-?[0-9]+([.][0-9]+)?$/ )似乎不适用于空间编号。我也尝试过

从 csv 文件中仅解析数字的最佳方法是什么?谢谢。

答案1

让我们看看你的命令:

sed '/[^0-9, -, .]/d'

这实际上做了什么:

它删除任何包含任何字符的行除了下列:

  • 一个数字 (0-9)
  • 一个逗号
  • 从空格到逗号的任何字符 - 顺便说一下,其中包括下划线以及连字符
  • 一段时间。

所以任何有任何字符除此之外的内容都会被删除。

你认为这会做什么:

我不知道。

相关内容