그래서 저는 이 파일을 가지고 있고 특정 문구 뒤에 0이 아닌 숫자가 오는 줄을 찾고 싶습니다. grep을 사용하려고 하는데 0을 무시하도록 형식을 지정하는 방법을 모르겠습니다. 한 줄은 다음과 같습니다.
2009-12-05 : Reindexing 100: [result]
2009-12-07 : Reindexing 0: [result]
나는 첫 번째 행만 원합니다.
미리 감사드립니다.
답변1
Reindexing
0이 아닌 숫자가 뒤에 오는 첫 번째 구문을 얻으려면 (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)" 부분은 부정 예측으로 "뒤에 단어 문자가 오지 않음"을 의미합니다. 마지막 조건을 변경하면 원하는 필터링을 수행할 수 있습니다.