![특정 정수에 대해 텍스트 파일을 검색하는 방법](https://rvso.com/image/89165/%ED%8A%B9%EC%A0%95%20%EC%A0%95%EC%88%98%EC%97%90%20%EB%8C%80%ED%95%B4%20%ED%85%8D%EC%8A%A4%ED%8A%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
특정 정수의 모든 인스턴스에 대해 텍스트 파일(소스 코드)을 검색하는 간단한 방법이 있습니까? 정수를 하위 문자열로 포함하는 더 큰 숫자에서는 트리거되어서는 안 되지만, 두 경우가 모두 포함될 수 있으므로 이러한 행을 단순히 제외할 수는 없습니다.
'6'을 검색합니다...
int a=6; // found
int b=16; // not found (despite the '6' in '16')
int c=6, d=16; // found
나는 이것에 대한 명령줄 접근 방식을 정말로 찾고 있지만,포스이를 수행하는 GUI 유형 편집기입니다.
답변1
grep -E '\b6\b'
\b
"단어 경계"입니다
-w
편집: @nobar를 올바른 방향으로 가리킨 후 그는 맨페이지에서 바로 가기 옵션(word-regexp)을 찾아 지적했으며 이는 위의 작업을 다음과 같이 단순화합니다.
grep -w 6
많이 사용하면 다음과 유사한 기능을 사용할 수 있습니다.
wgrp(){ grep -w "$1" "$2"; }
참고(@glenn-jackman): 여기에 인용하지 않으면 "$2"
함수를 파이프라인 필터로 사용할 수 있습니다. 하지만 그렇습니다. 그러면 공백이 있는 파일 이름에서는 작동하지 않습니다.
@Gilles의 또 다른 훌륭한 답변을 읽은 후 이제 제안합니다.
igrp(){ grep -E "(^|[^0-9])$1($|[^0-9])" "$2"; }
답변2
정규식을 사용하여 특정 정수를 검색할 수 있습니다. 데이터의 시작 부분이나 숫자가 아닌 문자가 앞에 오는 숫자를 검색하고 숫자 뒤에서도 마찬가지입니다.
grep -e '^6$' -e '^6[^0-9]' -e '[^0-9]6$' -e '[^0-9]6[^0-9]' # BRE syntax
grep -E '(^|[^0-9])6($|[^0-9])' # ERE syntax
다른 답변에서 제안한 전체 단어 검색은 다음과 같은 히트를 놓칩니다 foo6bar
. (이것은 귀하의 사용 사례에 문제가 아닐 수도 있지만 귀하가 요청한 것입니다.)
어느 정도 진지한 텍스트 편집기나 뷰어(예: less
)에는 정규식 검색 기능이 있습니다. 문서를 확인하여 어떤 정규식 구문을 사용하는지 확인하세요.