전체가 숫자가 아닌 모든 텍스트 줄을 제거합니다.

전체가 숫자가 아닌 모든 텍스트 줄을 제거합니다.

단어 목록이 있고 숫자만 포함된 각 텍스트 줄을 새 파일로 추출하고 싶습니다. 나는 무엇을 해야 합니까?

답변1

숫자만 포함된 행을 추출하려면 다음을 수행합니다.

$ grep -x '[0-9][0-9]*' words >digits

정규식은 [0-9][0-9]*최소한 하나의 숫자가 포함된 모든 줄과 일치하며, -x옵션에서는 grep전체 줄이 주어진 식과 일치해야 합니다.

파일에 빈 줄이 없으면 으로 변경할 수 있습니다 grep -x '[0-9]*'.

라인을 원하시면숫자, 알파벳 문자가 있는 줄을 제거합니다(일반 숫자에 대한 정규식을 구성하는 것보다 쉽습니다).

$ grep -v '[a-zA-Z]' words >numbers

두 변형 모두 POSIX 문자 클래스를 사용합니다.

$ grep -x '[[:digit:]][[:digit:]]*' words >digits
$ grep -v '[[:alpha:]]' words >numbers

고쳐 쓰다: 다음을 포함하는 행을 선택하려는 경우부동 소수점 숫자(확장) 정규식을 사용할 수 있습니다 ^[+-]?([0-9]*\.)?[0-9]+$.

$ grep -x -E '[+-]?([0-9]*\.)?[0-9]+' words >floats

그것은 모두 우리가 찾고 있는 "숫자"에 따라 다릅니다.

답변2

by 문자가 포함된 줄을 삭제 sed하고 출력을 다른 파일에 넣습니다.

sed '/[a-z]/Id' yourInputFile > yourOutputFile

또는 원본 파일을 그대로 변경하려면 다음을 수행하세요.

sed -i '/[a-z]/Id' yourInputFile 

관련 정보