-X
파일에서 와 같이 대시 / 하이픈으로 시작하는 문자열을 grep하고 싶지만 명령 줄 인수로 혼란 스럽습니다.
난 노력 했어:
grep "-X"
grep \-X
grep '-X'
답변
답변
대시는 http://tldp.org/LDP/abs/html/special-chars.html#DASHREF에 명시된 Bash의 특수 문자입니다 . 따라서 이것을 한 번 빠져 나가면 Bash를 지나갈 수 있지만 Grep은 여전히 옵션을 제공하여 대시에 대한 고유 한 의미를 갖습니다.
따라서 다른 언급 된 답변을 사용하지 않으려는 경우 실제로 두 번 탈출해야합니다. 다음은 작동해야합니다.
grep \\-X
grep '\-X'
grep "\-X"
Bash가 스크립트 / 프로그램에 인수를 전달하는 방법을 시도하는 한 가지 방법은 모든 인수를 에코하는 .sh 스크립트를 작성하는 것입니다. echo-args.sh라는 스크립트를 사용하여 수시로 재생합니다.
echo $*
다음과 같이 호출합니다.
bash echo-args.sh \-X
bash echo-args.sh \\-X
bash echo-args.sh "\-X"
당신은 아이디어를 얻습니다.
답변
grep -e -X
트릭을 할 것입니다.
답변
grep -- -X
grep \\-X
grep '\-X'
grep "\-X"
grep -e -X
grep [-]X
답변
Solaris 컴퓨터에 액세스 할 수 없지만 grep "\-X"
Linux 에서는 작동합니다.
답변
올바른 방법은 이미 언급했듯이 “-“를 사용하여 인수 처리를 중지하는 것입니다. 이는 도구 소스에서 getopt_long (getopt.h의 GNU C 기능)을 사용하기 때문입니다.
그렇기 때문에 다른 명령 줄 도구에서도 동일한 현상이 나타납니다. 그것들은 대부분 GNU 도구이고이 호출을 사용하기 때문에 같은 동작을 보입니다.
참고로 getopt_long은 -rlo와 –really_long_option과 인터프리터의 인수 조합 중에서 멋진 선택을 제공합니다.
답변
grep에 단일 인수를 전달하는 다른 유틸리티를 사용하는 경우 다음을 사용할 수 있습니다.
'[-]X'