Wie kann ich jedes Wort in einer Textdatei löschen, außer einem Wort?

1134
minamon

Ich habe eine Datei mit einer Reihe von Informationen über Straße und WIFI (s). Also möchte ich jedes Wort in der Textdatei löschen, mit Ausnahme von Kennwort: ********, und es gibt eine Menge davon und die wort nach passwort ist variabel / zufälliges wort eine zeile mit dem wort, das ich behalten / kopieren möchte

1499904000, :: 13148748, Passwort: 20022003,: 1481477952,: Saad Al Ssaoudy,: 7942242}]}

0
Willkommen bei Super User! Was hast du bisher versucht? bertieb vor 6 Jahren 0
Vielen Dank @Bertieb Ich habe versucht, die Textdatei in Excel zu importieren, dann die Auswahl aus dem Textimportassistenten zu treffen, dann (,) in die Trennzeichen einzufügen und sie mit einem Mausrecorder zu kopieren, aber es ist sehr langsam. Der Grund meiner Frage ist, das Passwort zu kopieren minamon vor 6 Jahren 0
Meinen Sie vielleicht *** außer ** Passwort und das Wort unmittelbar danach *? Twisty Impersonator vor 6 Jahren 0
Bitte [bearbeiten] Sie die Frage und fügen Sie einen Beispieltext ein. DavidPostill vor 6 Jahren 0
@ TwistyImpersonator Ja minamon vor 6 Jahren 0
Bitte [bearbeiten] Sie Ihre Frage, um das zu klären Twisty Impersonator vor 6 Jahren 0
@DavidPostill OK minamon vor 6 Jahren 0
@ TwistyImpersonator fertig minamon vor 6 Jahren 0
@minamon du hast einen rechtschreibfehler gemacht, es ist außer nicht zu erwarten. Ich habe es gerade korrigiert barlop vor 6 Jahren 0
@barlop danke ..................... minamon vor 6 Jahren 0

2 Antworten auf die Frage

0
Computing Corn

Ich glaube nicht, dass es ein Programm gibt (das ich gefunden habe), das auf Ihr Problem zugeschnitten ist.

Das Beste, was ich vorschlagen kann, ist das Schreiben eines Skripts in einer Sprache wie Python 3.

Wenn Sie mit dem Programmieren nicht vertraut sind, sollten Sie zu stackoverflow wechseln, um Ihr Problem darzustellen.

Es tut mir leid, wenn dies keine geeignete Alternative ist.

Sie sollten etwas über reguläre Ausdrücke und das Erfassen lernen barlop vor 6 Jahren 0
@Computing Mais ja solltest du minamon vor 6 Jahren 0
0
barlop

Schritt 1-

finden- .*?(?=password:)(password.*?)(?=(,|\s))
ersetzen durch-\r\n\r\n$1\r\n\r\n

Einige Erklärungen - dieser Teil der Suche .*?(?=password:)stimmt bis zu einem Punkt überein, an dem er voraussehen kann, dh unmittelbar rechts neben dem Cursor, und das Wort password: rechts neben dem Cursor. Dann haben Sie diesen Teil der Suche, (password.*?)er stimmt überein und erfasst das Wort Passwort bis zu dem, was als nächstes erwähnt wird. Dann haben Sie diesen Teil des Fundes, (?=(,|\s))der Lookahead sagt, dh unmittelbar rechts vom Cursor, für ein Komma oder ein Leerzeichen wie ein Leerzeichen oder ein Zeilenende. Wenn Sie also (Kennwort. *?) Betrachten, wird der .*? Teil davon bis zu diesem Punkt gehen.

Sagen Sie, Sie haben

Beachten Sie, dass das Häkchen mit dem neuen Strich markiert ist, wenn Sie diesen Regex ausführen, wie das Bild auf dem Bild zeigt. Und auf dem Bild oben gibt es 4 Passwörter.

Wenn Sie das Suchen / Ersetzen ausführen, wird Folgendes erzeugt (Bild unten)

Schritt 2

Dann muss man nur leere Zeilen entfernen, in Notepad ++ kann man edit..line-Vorgänge .. leere Zeilen entfernen

Jeder Texteditor mit Regex-Unterstützung ist in Ordnung, z. B. Notepad ++

Hinweis: Eine frühere Version hatte einen einfacheren Regex, der den mehrfach vorkommenden String nicht sinnvoll behandelte (z. B. hätte er nur den letzten angezeigt). Diese Lösung stellt alle Zeitpunkte bereit, zu denen die Zeichenfolge auftritt.

Ich weiß, wir warten auf die Klärung des OP, aber ich schätze, das Wort * password * erscheint mehrmals in der Datei. Wenn Sie sagen, * "Hinweis- Stellen Sie sicher, dass das Wort" Kennwort "nicht zweimal in der Datei vorkommt" *. Was passiert / kann gemacht werden, wenn es mehrmals vorkommt? Twisty Impersonator vor 6 Jahren 0
@ TwistyImpersonator Dieser Regex würde / sollte den letzten bringen. Eine geringfügige Anpassung, also `. *? (? = Passwort) (Passwort [^,] *),. *` Würde das erste erhalten. Wenn Sie jedoch mehrere Passwörter verwenden, sollten Sie sie alle behalten und alles andere entfernen. barlop vor 6 Jahren 0
@TwistyImpersonator eine Lösung dafür, dass dies zwei Schritte ist (vielleicht kann man es in einem tun), obwohl ich oft finde, dass Regexen in mehreren Schritten am einfachsten und klarsten sind. Also https://i.imgur.com/ivmzIf8.png, in dem find-`(? = Kennwort:). *? (? = [\ S,])` `durch` \ r \ n \ r \ n $ 0 ersetzt wird \ r \ n \ r \ n` Dann wird jedes Passwort in einer eigenen Zeile stehen. Dann können diese einfachen Ausdrücke sagen, dass jede Zeile, die nicht mit einem Passwort beginnt, gelöscht werden kann. also find-`^ (?!). * $` ersetzen durch (Leerzeichen). barlop vor 6 Jahren 0
@TwistyImpersonator Beachten Sie, dass ich bei diesem Regex einen Haken mit der neuen Zeile gesetzt habe, wie das Bild auf dem Bild zeigt. Das erzeugt https://i.imgur.com/tVoYscn.png Dann muss man nur leere Zeilen entfernen, in Notepad ++ kann man edit..line-Operationen .. leere Zeilen entfernen. barlop vor 6 Jahren 0
@ barlop Vielen Dank, dass es funktioniert hat. Es hat funktioniert. Ich bin so glücklich, dass ich lange danach gesucht habe. Aber ich habe den letzten Schritt mit EmEditor gemacht. Es gab ein Problem mit Notepad ++. Fügen Sie bitte den letzten Teil der Lösung hinzu, damit ich sie abstimmen und als beste Antwort markieren kann. minamon vor 6 Jahren 0
@ TwistyImpersonator Danke auch, aber ich schätze, das Wort Passwort erscheint mehrmals in der Datei ` minamon vor 6 Jahren 0
@minamon done .. Ich habe den Regex etwas angepasst, so dass er in der letzten Zeile ein Passwort erhält. Ich glaube nicht, dass es vorher war .. Es lohnt sich immer, diese Dinge zu testen barlop vor 6 Jahren 0
@barlop vielen Dank, aber es gibt noch eine letzte Frage ... bevor der Vorgang durchgeführt wird, werden 3491 Übereinstimmungen des Wortes Kennwort gefunden. Nachdem der Vorgang abgeschlossen ist, werden nur 3477 Kennwort gefunden ... warum? Hier ist die Textdatei, die Sie selbst sehen können [Link] (https://ufile.io/zkjta) minamon vor 6 Jahren 0
@minamon Ich werde nachsehen .. Ich merke, dass das Passwort 3491 mal vorkommt. Aber `Passwort:` kommt 3472 mal vor. Ein Problem ist mit Ihren Daten, die in Zeile 579-580 stehen. Das Ende von Zeile 579 sagt Passwort, dann ist es das Ende der Zeile. In der nächsten Zeile steht dann ein Doppelpunkt. Sie haben also einige neue Zeilen in Ihren Daten, die nicht vorhanden sein sollten. Wenn Sie zum Beispiel den normalen Notizblock öffnen, stellen Sie sicher, dass view..status bar deaktiviert ist. Stellen Sie sicher, dass der Zeilenumbruch nicht markiert ist. Dann editiere..goto Zeile 579. Dann geh ans Ende davon Du siehst es sagt Passwort, dann ist in der nächsten Zeile ein Doppelpunkt barlop vor 6 Jahren 0
Ich habe aber es sagt Passwort: EL-Samar, minamon vor 6 Jahren 0
@ barlop note Ich habe alle "(das Anführungszeichen) aus der Textdatei entfernt, damit ich sie korrekt auf Excel einschränken kann, damit ich die Passwörter kopieren kann. minamon vor 6 Jahren 0
Anführungszeichen machen keinen Unterschied, aber ich habe eine Zählung für `password [\ s] *:` (also Passwort gefolgt von Leerzeichen gefolgt von Doppelpunkt) vorgenommen. Wenn also ein Doppelpunkt in einer neuen Zeile endet, ist das in Ordnung. Und das bringt 3483 Passwörter. Das ist wahrscheinlich die richtige Nummer. Es gibt Zeiten, in denen ein Satz wie "password: password" oder "password: nopasswordrequired" steht. Daher sollte das zweite Term-Passwort dort nicht abgerufen werden. barlop vor 6 Jahren 0
Es kann ein wenig Fummelei erfordern, um die Regex genau zu bestimmen. Versuchen Sie also diesen Regex `. *? (? = Passwort [\ s] *:) (Passwort. *?) (? = (, | \ S))` Das fängt 3484 barlop vor 6 Jahren 0
@barlop hallo danke es fängt 3488 nach den Schritten .. danke sehr viel. minamon vor 6 Jahren 0
@barlop Entschuldigung, mein Fehler, ich habe mit dem Wort Passwort statt. *? (? = Passwort [\ s] *:) (Passwort. *?) (? = (, | \ s)) .... gesucht. Hier ist die Anzahl der anderen Dateien mit dem alten-neuen Regex, jedoch mit der Suche des Wortkennworts ............... 1- 3477-3488 2- 19646-19654 3- 59532-59538. .. es hat es ein bisschen verbessert und das ist großartig. vielen, vielen dank ... vergiss nicht, die antwort mit neuer regex zu bearbeiten. Ich bin so glücklich, dass Sie hier waren, um mir zu antworten minamon vor 6 Jahren 0
@minamon kein Problem. Wenn Sie nach "Kennwort" suchen, wird jemand das Kennwort in das Kennwort aufgenommen, wenn es jemandem in sein Kennwort eingegeben hat, aber Sie möchten es nicht. Oder wenn die Datei die Wörter "Hier sind die Passwörter" enthält, wird das Wort Passwort dort abgerufen. Also `password:` dh mit einem Doppelpunkt wird weniger als `password` aufgenommen. Aber manchmal bekommt man ein Passwort, dann steht der Doppelpunkt in einer neuen Zeile. `Password [\ s] *:` ist also gut. Mit mehr Wissen über reguläre Ausdrücke können Sie zB nachsehen, woher das Wort Passwort ohne Doppelpunkt kommt. So können Sie Diskrepanzen finden. barlop vor 6 Jahren 0
@minamon Wenn Sie beispielsweise wissen, wo Sie ein Passwort gefolgt von keinem Doppelpunkt haben, können Sie zB nach 'Passwort (?! :)' suchen. Manchmal haben Sie den Doppelpunkt in der nächsten Zeile. Bei der Suche nach einem Kennwort kann also zu viel aufgenommen werden, bei der Suche nach "Kennwort:" kann es zu wenig sein. Diese Art von Suchen kann Ihre Abweichungen finden barlop vor 6 Jahren 0
@barlop vielen Dank .. ich habe heute viel von dir gelernt minamon vor 6 Jahren 0
@minamon kein prob barlop vor 6 Jahren 0
@ barlop minamon vor 6 Jahren 0