grep에서 큰 따옴표 이스케이프


91

나는 큰 따옴표가있는 키워드에 대해 grep을하고 싶었습니다. 간단한 예를 들면 :

echo "member":"time" | grep -e "member\""

일치하지 않습니다. 어떻게 고칠 수 있습니까?

답변:


133

문제는 입력 문자열을 올바르게 이스케이프하지 않았다는 것입니다.

echo "\"member\":\"time\"" | grep -e "member\""

또는 작은 따옴표 안에 이스케이프 처리되지 않은 큰 따옴표를 사용할 수 있습니다.

echo '"member":"time"' | grep -e 'member"'

두 번째 접근 방식은 명령을 다른 작은 따옴표 세트 (예 :) 내에 중첩하는 것을 방지하지만 더 명확하게 찾는 선호도의 문제입니다 ssh 'cmd'.


1
이 작동할까요? echo '"member":"time"' |grep -e "member"하지 테스트 한
개미

거의. 이어야 echo '"member":"time"' |grep -e 'member"'합니다. 두 가지 방법 모두 유효하지만 의도가 더 명확하므로 명시 적 이스케이프를 선호합니다.
cmh 2012-08-16

같은 사람이 (1)를 선호 할 경우 네, 어쩌면 당신의 대답을 편집
개미

이것은 (백 슬래시 사용) Windows에서 작동하지 않습니다. 실제로 부분적으로 작동하지만 출력을 파일로 리디렉션 할 수 없습니다.
Radim Cernej

@RadimCernej 나는 Windows 특정 질문을 묻는 것이 좋습니다.이 질문의 범위를 벗어난 것 같습니다.
cmh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.