특정 정수의 모든 인스턴스에 대해 텍스트 파일(소스 코드)을 검색하는 쉬운 방법이 있습니까? 이는 하위 문자열로 정수를 포함하는 더 큰 숫자에 대해 트리거되어서는 안 되지만, 두 가지가 모두 포함될 수 있으므로 그러한 행을 단순히 제외할 수는 없습니다.
"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
: )에는 정규식 검색 기능이 있습니다. 사용되는 정규식 구문을 이해하려면 설명서를 확인하세요.