특정 정수에 대해 텍스트 파일을 검색하는 방법

특정 정수에 대해 텍스트 파일을 검색하는 방법

특정 정수의 모든 인스턴스에 대해 텍스트 파일(소스 코드)을 검색하는 간단한 방법이 있습니까? 정수를 하위 문자열로 포함하는 더 큰 숫자에서는 트리거되어서는 안 되지만, 두 경우가 모두 포함될 수 있으므로 이러한 행을 단순히 제외할 수는 없습니다.

'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)에는 정규식 검색 기능이 있습니다. 문서를 확인하여 어떤 정규식 구문을 사용하는지 확인하세요.

답변3

나는 이것이 그렇게 모호한 필요가 아니었던 것 같아요. 나의 정규 프로그래밍 편집자,플루마"전체 단어만 일치" 옵션을 사용하는 "찾기" 대화 상자를 통해 이를 지원합니다. 나는 다른 많은 편집자들도 이것을 가지고 있을 것이라고 확신합니다. 비록 현재로서는 분명히 플루마의 조상은 아니지만,gedit.

여기에 이미지 설명을 입력하세요

관련 정보