grep을 사용하여 파일에서 "-R"을 찾는 방법은 무엇입니까? grep "-R" *.GNU
-R이 포함된 줄을 가져오려고 했지만 아무것도 반환되지 않았습니다.
답변1
노력하다:
grep -- -R *.GNU
--
옵션의 끝을 나타내 -R
므로 옵션이 아닌 매개변수로 처리됩니다.grep
답변2
상당수의 GNU 도구는 더 이상 명령줄 옵션을 자체적으로 구문 분석하지 않도록 도구( , 등)에 알릴 수 있는 옵션을 지원 합니다 rm
. 이 옵션은 명령줄 입력에 이중 대시를 표시하여 편리하게 사용할 수 있습니다 .grep
ls
--
이에 대한 자세한 내용은 다음에서 읽을 수 있습니다.GNU CoreUtils FAQ. 구체적으로 이 섹션의 제목은 다음과 같습니다.11 대시로 시작하는 파일을 삭제하는 방법.
이를 통해 -
대시(즉)로 시작하는 파일을 명령줄 인수로 전달할 수 있습니다.
예
rm ./-stuff
rm /full/path/-stuff
rm -- -stuff
mv ./-stuff differentstuff
mv -- -stuff differentstuff
답변3
가장 일반적인 방법
grep -- -R *.GNU
grep의 일부 변형과 함께 작동합니다. --
grep에게 플래그 검색을 중지하라고 지시합니다 .
grep -e -R *.GNU
또한 작동합니다. -e
grep에게 검색 패턴을 따르도록 지시합니다 .
대안
grep '[-]R' *.GNU
[-]
는캐릭터 클래스. 이 클래스에는 문자가 하나만 있으므로 하이픈( -
)과 일치해야 합니다.
grep '.\?-R' *.GNU
물음표는 grep에게 앞의 문자가 선택 사항임을 나타냅니다. .
모든 문자 와 일치합니다 .
grep '\(\)-R' *.GNU
대괄호는 비어 있습니다.그룹.
답변4
이렇게 대시를 탈출해 보세요
grep "\-R" *.GNU