¿Cómo procesar un archivo que contiene cotizaciones?

¿Cómo procesar un archivo que contiene cotizaciones?

Sé bastante sobre los personajes de escape en BASH. Sé que \escapará del siguiente carácter, " "escapará de todos los caracteres excepto $y ", y finalmente ' 'escapará de todos los caracteres excepto '. Entonces, si, por ejemplo, tengo texto con algunas comillas simples ', puedo poner " " alrededor para que se comporte como una sola cadena de texto. El problema que tengo es cuando mi archivo contiene comillas dobles y simples. Entonces, no puedo usar ningún tipo de comillas para escapar. Entonces, ¿cómo le pido a bash que lo trate como una sola cadena?

Contexto: archivo /var/mobile/Library/Safari/History.plist de mi iPhone. Contiene algo como:

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

Quiero acceder catal archivo, pasarlo greppara tomar la primera línea que contiene el texto stringy extraer la URL de allí. Pero grepse ahoga con todas las citas.

Edición 1: aquí hay algunas capturas de pantalla de nano que no pudo leer el archivo. Cat da un resultado similar. El editor gráfico de archivos iFile lo lee como texto. http://cloudrac3r.ddns.net/strange.html Me han dicho que esto es lo que hacen los archivos binarios. Haré algunos experimentos.

Respuesta1

Si ingresa la cadena literalmente en el comando, puede escapar los caracteres a su voluntad.

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

También tenga en cuenta que catno es necesario.

Además, es mucho mejor utilizar una herramienta compatible con XML para procesar XML.

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

Respuesta2

(Edición convertida para responder)

Utilicé el plutilcomando para convertir el plist en texto adecuado ya que era un "archivo binario". Una vez hecho esto, grepno tuve problemas para administrar el archivo.

información relacionada