Как обработать файл, содержащий цитаты?

Как обработать файл, содержащий цитаты?

Я знаю довольно много о символах экранирования в BASH. Я знаю, что \экранирует следующий символ, " "экранирует все символы, кроме $и ", и, наконец, ' 'экранирует все символы, кроме '. Так что если, например, у меня есть текст с некоторыми одинарными кавычками ', я могу поместить " " вокруг него, чтобы он вел себя как одна текстовая строка. Проблема у меня возникает, когда мой файл содержит как двойные, так и одинарные кавычки. Тогда я не могу использовать ни один из типов кавычек для его экранирования. Так как мне попросить bash обрабатывать его как одну строку?

Контекст: Файл /var/mobile/Library/Safari/History.plist моего iPhone. Он содержит что-то вроде:

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

Я хочу catфайл, пропустить его, grepчтобы взять первую строку, содержащую текст string, и извлечь из нее URL. Но grepон захлебывается всеми кавычками.

Редактировать 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

(Преобразовано в ответ)

Я использовал plutilкоманду для преобразования plist в надлежащий текст, поскольку это был 'двоичный файл'. После этого grepне возникло никаких проблем с управлением файлом.

Связанный контент