Nice programing

grep "\\"XXFile을 사용하면 "Trailing Backslash"가 표시됩니다.

nicepro 2020. 12. 4. 20:36
반응형

grep "\\"XXFile을 사용하면 "Trailing Backslash"가 표시됩니다.


이제 '\'문자가 포함 된 줄이 있는지 확인하고 싶습니다. 시도 grep "\\" XXFile했지만 "Trailing Backslash"를 암시합니다. 하지만 시도했을 때 grep '\\' XXFile괜찮습니다. 누가 첫 번째 사건이 실행되지 않는 이유를 설명 할 수 있습니까? 감사.


차이점은 쉘이 백 슬래시를 처리하는 방법에 있습니다.

  • "\\"큰 따옴표로 쓰면 쉘은 백 슬래시 이스케이프를 해석하고 문자열 \을 grep에 전달합니다 . 그러면 Grep은 뒤에 오는 문자가없는 백 슬래시를보고 "후행 백 슬래시"경고를 내 보냅니다. 큰 따옴표를 사용하려면 두 단계의 이스케이프를 적용해야합니다. 하나는 셸용이고 다른 하나는 grep 용입니다. 결과 : "\\\\".

  • '\\'작은 따옴표로 쓸 때 쉘은 해석을 수행 하지 않습니다. 즉, grep은 \\두 백 슬래시가 그대로 있는 문자열 수신합니다 . Grep은이를 이스케이프 된 백 슬래시로 해석하므로 파일에서 리터럴 백 슬래시 문자를 검색합니다.

명확하지 않은 경우을 사용 echo하여 쉘이 수행하는 작업을 정확하게 볼 수 있습니다 . echo백 슬래시 해석 자체를 수행하지 않으므로 출력되는 내용은 쉘이 전달한 것입니다.

$ echo "\\"
\
$ echo '\\'
\\

명령을 다음과 같이 작성할 수 있습니다.

grep "\\\\" ...

여기에는 bash가 두 개의 단일 백 슬래시로 변환되는 두 쌍의 백 슬래시가 있습니다. 이 새로운 쌍은 이스케이프 백 슬래시로 grep에 전달되어 원하는 것을 얻습니다.

참고 URL : https://stackoverflow.com/questions/20342464/when-grep-xxfile-i-got-trailing-backslash

반응형