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)
  • 쉼표
  • 공백부터 쉼표까지의 모든 문자 - 밑줄과 하이픈도 포함됩니다.
  • 일정 기간.

그래서 누구든지모든 문자이외의 내용은 삭제됩니다.

이것이 무엇을 할 것이라고 생각하십니까?

나는 모른다.

관련 정보