Elimina informazioni sui contatti su Mac

1

Il mese scorso, per un evento temporaneo, ho aggiunto un numero polacco (+48 prefisso) a 800 dei miei contatti regolari utilizzando un file vCard.

Ora, questo evento è finito e ora mi piacerebbe rimuovere tutti i numeri di polacco temporanei dai miei contatti e mantenere intatte tutte le altre informazioni.

C'è un modo per farlo facilmente, ad esempio, utilizzando un'azione di Automator?

    
posta LuCouto 28.07.2016 - 18:33
fonte

1 risposta

1

Ho eliminato la mia risposta originale perché inizialmente non avevo capito come venivano aggiunti i +48 , mi dispiace per quello.

Invece di usare AppleScript, ti offrirò una soluzione diversa perché mentre potrei e ho modificato il codice AppleScript originale per eliminare l'intero numero che aveva un prefisso +48 , tuttavia c'erano errori che impedivano allo script di essere eseguito completamente durante la fase di test. Quindi sto optando per una soluzione diversa per il debug del codice AppleScript

Questa soluzione richiede l'esportazione dell'intero contenuto di Contacts.app in un file vCard (.vcf), modificandolo utilizzando un RegEx in sed e quindi importando nuovamente il file vCard modificato (.vcf) in Contatti. Nota che questo metodo sostituirà tutti i contatti esistenti con il nuovo file allcontacts.vcf aggiornato e non dovrebbe essere un problema in quanto rimuove solo le informazioni che hai dichiarato di voler rimuovere, solo in modo indiretto.

NOTA: Queste indicazioni sono state testate su OS X 10.11.5 con Contacts.app utilizzando le sue preferenze predefinite .

  • Apri contatti.

  • Contatti di backup, fai clic su: File > Esporta > Archivio contatti ...

Ora che i contatti sono stati sottoposti a backup, fai quanto segue ...

  • Seleziona il primo contatto e poi premi comando A per selezionare tutti i contatti.

  • Fai clic su: File > Esporta > Esporta vCard ...

  • Nella finestra di dialogo Salva con nome mostrerà come il nome del primo contatto e altri , e lo cambierà in: allcontatti

  • Copia e incolla il seguente comando in Terminale, quindi premi la barra spaziatrice per aggiungere uno spazio in seguito.

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

  • Dal Finder, trascina e rilascia il file allcontacts.vcf nella finestra del Terminale. Nota che in Finder, l'estensione .vcf potrebbe essere nascosta e verrà mostrata nel Terminale.

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

  • Ora premi invio per modificare il file allcontacts.vcf . Un backup dell'originale viene creato come: allcontacts.vcf.bak

Ora importa il file allcontacts.vcf aggiornato in Contatti.

  • File > Importa e seleziona il file allcontacts.vcf , quindi fai clic su Apri.

  • Sul "Sei sicuro di voler importare n card?" scheda fai clic su: esamina duplicati ...

  • Nel seguente foglio seleziona Mantieni nuovo e seleziona la casella di controllo Applica a tutto, quindi fai clic su Importa.

Le voci del telefono Contatti contenenti numeri con prefisso +48 sono state rimosse.

Le linee di destinazione nel file allcontacts.vcf avranno il seguente schema e si noti che l'esempio seguente non è l'unico modo che può presentare e quindi la necessità di usare una RegEx a parte i numeri di telefono essi stessi sono diversi in quanto il valore per type= può anche variare.

Esempio di riga nel file vCard: TEL;type=CELL;type=VOICE:+48 697 107 394

Il RegEx è: ^TEL.*\+48.*$

Spiegazione:

  • ^ asserisci la posizione all'inizio della stringa.
  • TEL corrisponde letteralmente ai caratteri TEL (maiuscole e minuscole).
  • . * corrisponde a qualsiasi carattere (eccetto newline). Quantificatore: * Tra zero e un numero illimitato di volte, il più volte possibile, restituendo se necessario [goloso].
  • \ + corrisponde letteralmente al carattere +
  • 48 corrisponde letteralmente ai caratteri 48.
  • . * corrisponde a qualsiasi carattere (eccetto newline). Quantificatore: * Tra zero e un numero illimitato di volte, il più volte possibile, restituendo se necessario [goloso].
  • $ asserisce la posizione alla fine della stringa.

Quindi, il sed comando , sed -i.bak -E '/^TEL.*\+48.*$/d' file esegue il backup del file ( -i.bak ) ed elimina qualsiasi riga che inizia con TEL che contiene +48 . Che in base al modo in cui le righe vengono memorizzate nella vCard rimuoverà semplicemente le linee necessarie per eseguire l'attività poiché le righe che iniziano con TEL che hanno +48 in esse possono essere solo le linee che vuoi rimuovere.

NOTA: Inoltre, si presuppone che in precedenza non ci fossero numeri con il prefisso +48 prima di aggiornare i contatti con il file vCard originale che conteneva i numeri con il prefisso +48 .

    
risposta data 01.08.2016 - 18:15
fonte

Leggi altre domande sui tag