Wie finde ich Text, der nach dem Zufallsprinzip zerbrochen und eingerückt ist?

470
breathlessblizzard

Ich habe ein .ICS-Dokument, das ich in Notepad geöffnet habe.

Beim Exportieren der Datei hat das Kalendersystem jede Ereignisbeschreibung mit einem Satz versehen. Für einen Platzhalter verwende ich:

This is a placeholder sentence with a web url http://example.com/null/. 

Ich muss diesen Satz aus einer sehr langen Textdatei entfernen, wobei nur Texteditoren verwendet werden, die sich nicht mit Einrückungen oder Formatierungen beschäftigen, da das Textformat von ICS computerlesbar sein muss.

Hier ist mein Problem. Zeilen sind in ICS auf 75 Zeichen begrenzt, sodass die Datei in etwa wie folgt aussieht:

DESCRIPTION: .................................. This is a placeholder senten ce with a web url http://example.com/null/. DESCRIPTION: .......... This is a placeholder sentence with a web url http:/ /example.com/null/. DESCRIPTION: ......................................... This is a placeholder sentence with a web url http://example.com/null/. 

Das Programm brach den Satz ab, wenn er 75 Zeichen überschritt, und fügte in der nächsten Zeile einen Einzug ein. Ich nehme an, dies ist für die Maschinenlesbarkeit gedacht.

Das Problem ist, dass durch den zusätzlichen Platz alle Such- und Ersetzungsfunktionen ungültig werden, die ich verwenden kann. Es ist zufällig, es zerbricht Worte und ich bin nicht sicher, was ich tun soll.

Ich muss eine Funktion oder ein Skript verwenden, das den Zeilenumbruch UND den Einzug ignorieren kann. Irgendwelche Ideen?

1
Sie müssen die vollständigen Zeilen neu erstellen. Ein einfacher Filter ist ein paar Zeilen von C, aber in einem Skript ist das ziemlich schwierig - ich konnte nicht einmal "sed" dazu bringen, und es erledigt die meisten Dinge. Wenn es sich nur um eine Datei handelt, kann es sein, dass Sie einen binären Editor finden, der das ausführt (ich konnte `frhed` verwenden, jedoch mit Schwierigkeiten). Der Linux-Befehl "bbe" funktioniert (`bbe -b '/ \ n /: 2' -e 's / \ n // g'`), aber ich kann keinen Windows-Port finden. AFH vor 8 Jahren 0
@AFH na gut, ich finde dafür eine Problemumgehung. Ich bin nicht in der Lage, mit Systembefehlen herumzuspielen. breathlessblizzard vor 8 Jahren 0
Ich habe gerade eine einfache Antwort für einzelne Dateien gefunden: `notepad ++`. Im ** Extended ** Match-Modus können Sie alle Vorkommen von `\ n` suchen und durch Leerzeichen ersetzen. Ich verwende dies immer anstelle von 'notepad', habe aber den erweiterten Suchmodus vergessen. Sie können es leicht als [Portable App] (http://portableapps.com/apps) erhalten. AFH vor 8 Jahren 0
Wie kann ich das zusätzliche Leerzeichen ignorieren? Gibt es einen Filter oder etwas, das ich verwenden kann? @AFH breathlessblizzard vor 8 Jahren 0
Ich habe Ihnen gerade gesagt: Suchen Sie nach _new-line space_. AFH vor 8 Jahren 0
@AFH Okay, das scheint sich mit den anderen Textblöcken in der Datei zu verwirren und das Format zu löschen. Gibt es eine Möglichkeit, nach einem Satz mit einer Anomalie zu suchen? breathlessblizzard vor 8 Jahren 0
Nicht, dass ich davon Wüste. Ich kann nur daran denken, _new-line space_ zu entfernen, die zu entfernenden Zeilen zu löschen, sie dann durch einen regulären Ausdruck zu ersetzen und `(. )` durch `\ 1 \ n` zu ersetzen. AFH vor 8 Jahren 0
@AFH Ah, das wird schwierig. ICS verwendet den _New-Line-Space_ jedes Mal, wenn eine Zeile 75 Zeichen überschreitet. Dies schließt andere Teile der Beschreibung ein, die ich nicht ändern darf. Ich muss _new-line space_ für diesen Satz irgendwie isolieren. Oder vielleicht könnte ich nach `This is ... (wildcard) ... example.com / null.` suchen, etwas, das den Satz enthält, aber nicht explizit auf den Text in der Mitte verweist? breathlessblizzard vor 8 Jahren 0

1 Antwort auf die Frage

0
TuesusMalnex

Vorsicht zu Beginn: Arbeiten Sie an einer Kopie der Datei und achten Sie auf die Zeilenumbrüche (einige Dateien haben Wagenrücklauf und Zeilenvorschub):

Sie können diese Site durchsuchen und sich über JREPL.BAT von dbenham informieren oder diesen Hack auf einer Kopie der Datei ausprobieren, vorausgesetzt :

a) Ihre .ICS-Datei ist eine Textdatei;

b) Sie müssen dies nur selten tun;

c) Die BESCHREIBUNG wird niemals in die nächste Zeile eingefügt.

In Microsoft Word: Markieren Sie den gesamten Text (Strg + A) und öffnen Sie dann den Dialog Suchen und Ersetzen mit der Tastenkombination Strg + H:

Schritt_1 Um Zeilenumbrüche zu finden, geben Sie das Suchfeld ein : "^ l" (Leerzeichen nach dem Kleinbuchstaben L einfügen )

Schritt_2 Geben Sie im Feld Ersetzen nichts ein.

Schritt_3 Klicken Sie auf Alle ersetzen.

Schritt_4 Klicken Sie bei gedrückter Strg- Taste links neben jeder Platzhalterzeile, die Sie entfernen möchten, und drücken Sie dann die Löschtaste. (Sie können die Makro-Funktion verwenden, um dies automatisch durchzuführen, wenn die gesamte Prozedur im Allgemeinen für Sie funktioniert.)

ODER Sie können Ihre üblichen Werkzeuge verwenden, um die Platzhalter zu löschen.

Schritt_5 Als .txt-Datei speichern und in .ICS umbenennen

Das ist mein Problem. Es teilt sich nicht auf dasselbe Wort. breathlessblizzard vor 8 Jahren 0
Ich habe meinen Vorschlag bearbeitet, um die Zeilenumbrüche und Leerzeichen zu entfernen TuesusMalnex vor 8 Jahren 0
Das scheint nicht zu funktionieren. Word scheint ^ l nicht als gültiges Suchargument zu akzeptieren. (Word 2013) breathlessblizzard vor 8 Jahren 0
Führen Sie eine Aktion zum Suchen und Ersetzen wie folgt in Word 2013 aus: (1) Drücken Sie diese beiden Tasten zusammen auf der Tastatur: Strg + H; (2) Klicken Sie auf "Mehr". (3) Klicken Sie auf "Spezial". (4) Klicken Sie auf "Manueller Zeilenumbruch" (oder klicken Sie auf "Absatzmarke", wenn dies Ihre Datei enthält). Sie sollten jetzt ^ l (oder ^ p) in den Such- und Ersetzungskriterien anzeigen. TuesusMalnex vor 8 Jahren 0