Wie kann ich eine bestimmte Zeile einer .txt-Datei in AppleScript löschen?

Ich habe eine .txt-Datei auf meinem Computer gespeichert. Dies ist der Speicherort der Datei:

/Users/Me/Desktop/My Documents/My Fruit Log.txt

Ich möchte, dass meine AppleScript-basierte Automator-Anwendung eine bestimmte Zeile der TXT-Datei löscht.

Der Inhalt der .txt-Datei sieht folgendermaßen aus:

Also, wenn:

set lineNumberToErase to 8

Die resultierende .txt-Datei sollte wie folgt aussehen:

Beachten Sie, dass nicht nur der Text in dieser Zeile entfernt wird, sondern auch die gesamte Zeile.

Bonuspunkte, wenn die Lösung einen Mechanismus enthält, der sicherstellt, dass nicht mehr als 1 Zeile aus der Datei entfernt wird. Meine Befürchtung bei der Automatisierung solcher Löschungen ist, dass das Skript irgendwie die gesamte Datei löscht (basierend darauf, dass ich irgendwo einen kleinen Fehler gemacht habe).

Wow, das ist ein merkwürdiger Zufall. Das Spezifische der zu löschenden Zeile ist die 8. Zeile. Der Inhalt der Zeile ist irrelevant.

Antworten (1)

Hier ist eine do shell scriptAppleScript- Befehlslösung , mit der seddie Zielzeile der Zieldatei direkt gelöscht wird.

set targetFile to "/Users/Me/Desktop/My Documents/My Fruit Log.txt"
set lineNumberToErase to 8

do shell script "sed -i '' -e '" & lineNumberToErase & "d' " & quoted form of targetFile

Wenn Sie möchten, dass eine Sicherungskopie der Zieldatei erstellt wird, ändern Sie die sed Option -i '' in -i '.bak', z. B.:

do shell script "sed -i '.bak' -e '" & lineNumberToErase & "d' " & quoted form of targetFile