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
'Nice programing' 카테고리의 다른 글
GCC가 바쁜 대기 루프를 최적화하지 못하게하는 방법은 무엇입니까? (0) | 2020.12.04 |
---|---|
Python simpleHTTPserver를 어떻게 종료합니까? (0) | 2020.12.04 |
현재 시간에시, 분, 초 추가 (0) | 2020.12.04 |
'바이너리'와 '텍스트'파일을 어떻게 구별합니까? (0) | 2020.12.04 |
OSX에서 GCC 업데이트 (0) | 2020.12.04 |