Purgar información de contactos en Mac

1

El mes pasado, para un evento temporal, agregué un número polaco (prefijo +48) a 800 de mis contactos regulares usando un archivo vCard.

Ahora, este evento ha finalizado y ahora me gustaría eliminar todos esos números polacos temporales de mis contactos y mantener toda la información intacta.

¿Hay una manera de hacerlo fácilmente, por ejemplo, usando una acción de Automator?

    
pregunta LuCouto 28.07.2016 - 18:33

1 respuesta

1

He eliminado mi respuesta original porque al principio no entendí bien cómo se agregaron los números +48 , lo siento.

En lugar de usar AppleScript, le ofreceré una solución diferente porque, aunque pude modificar el código original de AppleScript para eliminar todo el número que tenía un prefijo +48 , no obstante hubo errores que impidieron que el script se ejecutara completamente durante la fase de prueba. Así que estoy optando por una solución diferente a la depuración del código de AppleScript.

Esta solución requiere exportar todo el contenido de Contacts.app a un archivo vCard (.vcf), modificarlo usando un RegEx en sed , y luego importar el archivo vCard modificado (.vcf) nuevamente a Contactos. Tenga en cuenta que este método reemplazará a todos los contactos existentes con el nuevo archivo actualizado allcontacts.vcf y no debería ser un problema, ya que solo está eliminando la información que dijo que quería eliminar, solo de forma indirecta.

NOTA: estas instrucciones se probaron en OS X 10.11.5 con Contacts.app usando sus preferencias predeterminadas .

  • Abrir contactos.

  • Contactos de copia de seguridad, haga clic en: Archivo > Exportar > Archivo de contactos ...

Ahora que se ha hecho una copia de seguridad de los Contactos, haga lo siguiente ...

  • Seleccione el primer contacto y luego presione command A para seleccionar todos los contactos.

  • Haz clic en: Archivo > Exportar > Exportar vCard ...

  • En el cuadro de diálogo Guardar como, se mostrará como, el nombre del primer contacto y n otros , y cámbielo a: allcontacts

  • Copie y pegue el siguiente comando en la Terminal, luego presione la barra espaciadora para agregar un espacio después.

    sed -i.bak -E '/^TEL.*\+48.*$/d'

  • Desde el Finder, arrastre y suelte el archivo allcontacts.vcf en la ventana de la Terminal. Tenga en cuenta que en el Finder, la extensión .vcf puede estar oculta y se mostrará en la Terminal.

Ejemplo: sed -i.bak -E '/^TEL.*\+48.*$/d' /Users/me/Documents/allcontacts.vcf

  • Ahora presione ingresar para modificar el archivo allcontacts.vcf . Se crea una copia de seguridad del original como: allcontacts.vcf.bak

Ahora importe el archivo allcontacts.vcf actualizado a Contactos.

  • Archivo > Importe y seleccione el archivo allcontacts.vcf , luego haga clic en Abrir.

  • En la sección "¿Está seguro de que desea importar n tarjetas?" hoja haga clic en: Revisar duplicados ...

  • En la hoja siguiente, seleccione Mantener Nuevo y marque la casilla de verificación Aplicar a Todos y luego haga clic en Importar.

Se han eliminado las entradas de teléfono de Contactos que contienen números con un prefijo +48 .

Las líneas de destino en el archivo allcontacts.vcf tendrán el siguiente patrón y tenga en cuenta que el ejemplo a continuación no es la única forma en que puede presentarse y, por lo tanto, la necesidad de utilizar un RegEx aparte de los números de teléfono. ellos mismos son diferentes ya que el valor para type= también puede variar.

Línea de ejemplo en el archivo vCard: TEL;type=CELL;type=VOICE:+48 697 107 394

El RegEx es: ^TEL.*\+48.*$

Explicación:

  • ^ afirmar posición al comienzo de la cadena.
  • TEL coincide con los caracteres TEL literalmente (distingue entre mayúsculas y minúsculas).
  • . * coincide con cualquier carácter (excepto nueva línea). Cuantificador: * Entre cero y tiempos ilimitados, tantas veces como sea posible, devolviendo según sea necesario [codicioso].
  • \ + coincide con el carácter + literalmente.
  • 48 coincide con los caracteres 48 literalmente.
  • . * coincide con cualquier carácter (excepto nueva línea). Cuantificador: * Entre cero y tiempos ilimitados, tantas veces como sea posible, devolviendo según sea necesario [codicioso].
  • $ afirma la posición al final de la cadena.

Entonces, el comando sed , sed -i.bak -E '/^TEL.*\+48.*$/d' file realiza una copia de seguridad del archivo ( -i.bak ) y elimina cualquier línea que comience con TEL que contenga +48 . El hecho de cómo se almacenan las líneas en la vCard solo eliminará las líneas necesarias para realizar la tarea, ya que las líneas que comienzan con TEL que tienen +48 en ellas solo pueden ser las líneas que desea eliminar.

NOTA: El también supone que anteriormente no tenía ningún número con el prefijo +48 antes de actualizar sus Contactos con el archivo vCard original que contenía los números con el prefijo +48 .

    
respondido por el user3439894 01.08.2016 - 18:15

Lea otras preguntas en las etiquetas