따옴표가 포함된 파일을 처리하는 방법은 무엇입니까?

따옴표가 포함된 파일을 처리하는 방법은 무엇입니까?

BASH의 이스케이프 문자에 대한 지식이 있습니다. \다음 문자가 이스케이프되고, 및 를 제외한 모든 문자가 " "이스케이프되고 , 마지막으로 제외한 모든 문자가 이스케이프된다는 것을 알고 있습니다 . 따라서 작은따옴표 '가 포함된 텍스트가 있는 경우 그 주위에 ""를 넣어 단일 텍스트 문자열처럼 동작하도록 할 수 있습니다. 내가 겪고 있는 문제는 내 파일에 큰따옴표와 작은따옴표 문자가 모두 포함되어 있을 때입니다. 그러면 어떤 종류의 따옴표로도 벗어날 수 없습니다. 그렇다면 bash를 단일 문자열로 처리하려면 어떻게 해야 할까요?$"' ''

컨텍스트: 내 iPhone의 /var/mobile/Library/Safari/History.plist 파일. 여기에는 다음 내용이 포함되어 있습니다.

  <key>
    <string>http://example.com/folder/index.html</string>
    <string>Title of Webpage which may include ' and "</string>
  </key>

텍스트가 포함된 첫 번째 줄을 cat파일에 전달 하고 여기에서 URL을 추출하고 싶습니다 . 그러나 모든 인용문은 숨이 막힐 정도입니다.grepstringgrep

편집 1: 다음은 nano가 파일을 읽을 수 없는 스크린샷입니다. Cat은 비슷한 출력을 제공합니다. 그래픽 파일 편집기 iFile은 이를 텍스트로 읽습니다. http://cloudrac3r.ddns.net/strange.html 나는 이것이 바이너리의 목적이라고 들었습니다. 몇 가지 실험을 해보겠습니다.

답변1

명령에 문자 그대로 문자열을 입력하면 원하는 대로 문자를 이스케이프할 수 있습니다.

grep 'Title of Webpage which may include '\'' and "' /var/mobile/Library/Safari/History.plist
grep "Title of Webpage which may include ' and \"" /var/mobile/Library/Safari/History.plist

또한 이는 cat필수 사항이 아닙니다.

또한 XML을 처리하려면 XML 인식 도구를 사용하는 것이 가장 좋습니다.

xmllint -xpath \
    '//key[string=concat("Title of Webpage which may include '\'' and ", '\''"'\'')]' \
    /var/mobile/Library/Safari/History.plist

답변2

(수정 사항을 답변으로 변환)

plutilplist는 "바이너리 파일"이므로 올바른 텍스트로 변환하기 위해 이 명령을 사용합니다 . 완료되면 grep파일 관리에 문제가 없습니다.

관련 정보