Löschen Sie Kontaktinformationen auf dem Mac

Letzten Monat habe ich für ein vorübergehendes Ereignis mithilfe einer vCard-Datei eine polnische Nummer (+48 Präfix) zu 800 meiner regelmäßigen Kontakte hinzugefügt.

Jetzt ist diese Veranstaltung vorbei und jetzt möchte ich all diese temporären polnischen Nummern aus meinen Kontakten entfernen und alle anderen Informationen intakt lassen.

Gibt es eine Möglichkeit, dies beispielsweise mit einer Automator-Aktion einfach zu tun?

Sie sagen, Sie haben eine vCard verwendet, um die "+48-Präfix" zu den Nummern hinzuzufügen. Können Sie ein Beispiel für eine Nummer aus der vCard zeigen, die geändert wurde? Sieht es so aus +481234567890oder was in der vCard?
Nummern sind wie +48 697 107 394

Antworten (1)

Ich habe meine ursprüngliche Antwort gelöscht, weil ich anfangs falsch verstanden habe, wie die +48Zahlen hinzugefügt wurden, tut mir leid.

Anstatt AppleScript zu verwenden, biete ich Ihnen eine andere Lösung an, denn obwohl ich den ursprünglichen AppleScript- Code ändern konnte und tat , um die gesamte Nummer mit einem +48Präfix zu löschen, gab es dennoch Fehler, die die vollständige Ausführung des Skripts während des Tests verhinderten Phase. Daher entscheide ich mich für eine andere Lösung als das Debuggen des AppleScript- Codes .

Diese Lösung erfordert das Exportieren des gesamten Inhalts der Contacts.app in eine vCard-Datei (.vcf), das Ändern mit einem RegEx in sed, und das anschließende Importieren der geänderten vCard-Datei (.vcf) zurück in Kontakte. Beachten Sie, dass diese Methode alle vorhandenen Kontakte durch die aktualisierte neue allcontacts.vcf- Datei ersetzt und kein Problem darstellen sollte, da sie wirklich nur die Informationen entfernt, von denen Sie angegeben haben, dass Sie sie entfernen möchten, nur auf Umwegen.

HINWEIS: Diese Wegbeschreibungen wurden unter OS X 10.11.5 mit der Contacts.app unter Verwendung ihrer Standardeinstellungen getestet .

  • Kontakte öffnen.

  • Kontakte sichern, klicken Sie auf: Datei > Exportieren > Kontakte archivieren…

Nachdem die Kontakte gesichert wurden, gehen Sie wie folgt vor...

  • Wählen Sie den ersten Kontakt und drücken Sie dann , commandAum alle Kontakte auszuwählen.

  • Klicken Sie auf: Datei > Exportieren > vCard exportieren…

  • Im Dialogfeld Speichern unter wird es angezeigt als, der Name des ersten Kontakts und n weiterer ,
    ändern Sie ihn in: alle Kontakte

  • Kopieren Sie den folgenden Befehl und fügen Sie ihn in das Terminal ein. Drücken Sie dann die Leertaste, um anschließend ein Leerzeichen hinzuzufügen .

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

  • Ziehen Sie aus dem Finder die Datei allcontacts.vcf in das Terminalfenster und legen Sie sie dort ab. Beachten Sie, dass die Erweiterung .vcf im Finder möglicherweise ausgeblendet ist und im Terminal angezeigt wird.

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

  • Drücken Sie nun auf enter, um die Datei allcontacts.vcf zu ändern . Eine Sicherung des Originals wird erstellt als: allcontacts.vcf.bak

Importieren Sie nun die aktualisierte allcontacts.vcf- Datei in Kontakte.

  • Datei > Importieren und wählen Sie die Datei allcontacts.vcf aus und klicken Sie dann auf Öffnen.

  • Auf der Seite "Möchten Sie wirklich n Karten importieren?" Blattklick : Duplikate überprüfen…

  • Wählen Sie auf dem folgenden Blatt „Neu behalten“ und aktivieren Sie das Kontrollkästchen „Auf alle anwenden“ und klicken Sie dann auf „Importieren“.

Die Telefoneinträge der Kontakte, die Nummern mit +48Vorwahl enthalten, wurden entfernt.


Die Zielzeilen in der Datei allcontacts.vcf haben das folgende Muster und beachten Sie, dass das folgende Beispiel nicht die einzige Möglichkeit ist, wie es dargestellt werden kann, und daher die Notwendigkeit, einen RegEx zu verwenden, abgesehen davon, dass die Telefonnummern selbst unterschiedlich sind, da der Wert für auch variieren type=kann .

Beispielzeile in der vCard-Datei:TEL;type=CELL;type=VOICE:+48 697 107 394

Der RegEx lautet:^TEL.*\+48.*$

Erläuterung:

  • ^ Position am Anfang der Zeichenfolge bestätigen.
  • TEL stimmt wörtlich mit den Zeichen TEL überein (Groß-/Kleinschreibung beachten).
  • .* entspricht jedem Zeichen (außer Newline). Quantifizierer: * Zwischen null und unbegrenzt, so oft wie möglich, nach Bedarf zurückgeben [gierig].
  • \+ passt buchstäblich auf das Zeichen +.
  • 48 stimmt wörtlich mit den Zeichen 48 überein.
  • .* entspricht jedem Zeichen (außer Newline). Quantifizierer: * Zwischen null und unbegrenzt, so oft wie möglich, nach Bedarf zurückgeben [gierig].
  • $ bestätigt die Position am Ende der Zeichenfolge.

sed Der Befehlsed -i.bak -E '/^TEL.*\+48.*$/d' file sichert also die Datei ( -i.bak) und löscht jede Zeile, die mit beginnt und die TELenthält +48. Je nachdem, wie Zeilen in der vCard gespeichert sind, werden nur die Zeilen entfernt, die zum Ausführen der Aufgabe erforderlich sind, da Zeilen, die mit beginnen, TELnur +48die Zeilen enthalten können, die Sie entfernen möchten.

HINWEIS: Es wird auch davon ausgegangen, dass Sie zuvor keine Nummern mit dem +48Präfix hatten, bevor Sie Ihre Kontakte mit der ursprünglichen vCard-Datei aktualisiert haben, die die Nummern mit dem +48Präfix enthielt.

Ich glaube, wir haben es fast geschafft. Tatsächlich möchte ich nicht nur die +48Vorwahl entfernen, sondern die gesamte Nummer. Ich möchte nur die +48-Nummern aus meinen Kontakten löschen.
@LuCouto, hatte endlich etwas Zeit, um zurückzublicken und meine Antwort mit einer Methode zu aktualisieren, die zwar nicht AppleScript ist, aber dennoch funktioniert.
Diese Anweisungen sind sehr klar und sie haben großartig funktioniert! Vielen Dank!