특정 숫자가 있는 행을 찾는 방법

특정 숫자가 있는 행을 찾는 방법

그래서 저는 이 파일을 가지고 있고 특정 문구 뒤에 0이 아닌 숫자가 오는 줄을 찾고 싶습니다. grep을 사용하려고 하는데 0을 무시하도록 형식을 지정하는 방법을 모르겠습니다. 한 줄은 다음과 같습니다.

2009-12-05 : Reindexing 100: [result]
2009-12-07 : Reindexing 0: [result]

나는 첫 번째 행만 원합니다.

미리 감사드립니다.

답변1

Reindexing0이 아닌 숫자가 뒤에 오는 첫 번째 구문을 얻으려면 (GNU grep)을 사용하십시오:

grep -m1 'Reindexing [1-9]' < input

답변2

"0이 아닌 숫자"를 의미하는 경우, 즉 다음을 처리하려는 경우:

  • 음수,
  • 분수 - 0 < n < 1 포함("0"으로 시작)

grep보다 더 강력한 것이 필요합니다. 예를 들어:

echo '2009-12-05 : Reindexing -0.7: [result]' | perl -ne 'print if /Reindexing -?(\d+(\.\d+)?+)(?!\w)/ and $1!=0'

이 솔루션은 숫자가 아닌 "100abc"와 같은 문자열도 제외합니다. "(?!\w)" 부분은 부정 예측으로 "뒤에 단어 문자가 오지 않음"을 의미합니다. 마지막 조건을 변경하면 원하는 필터링을 수행할 수 있습니다.

관련 정보