Как я могу удалить каждое слово в текстовом файле, кроме слова?

1044
minamon

У меня есть файл с кучей информации об улице и WIFI. Поэтому я хочу удалить каждое слово в текстовом файле, кроме пароля: ********, и его много, и слово за паролем это переменная / случайное слово строка со словом, которое я хочу сохранить / скопировать

1499904000, :: 13148748, пароль: 20022003,: 1481477952,: Saad Al Ssaoudy,: 7942242}]}

0
Добро пожаловать в Супер пользователя! что ты уже испробовал? bertieb 6 лет назад 0
Спасибо @bertieb Я попытался импортировать текстовый файл в Excel, затем выбрал разделитель в мастере импорта текста, затем добавил (,) в разделители, затем скопировал его с помощью мыши, но это очень медленно. причина моего вопроса в том, чтобы скопировать пароль minamon 6 лет назад 0
Возможно, вы имеете в виду ***, кроме ** пароля и слова, следующего за ним *? Twisty Impersonator 6 лет назад 0
Пожалуйста, [отредактируйте] вопрос, чтобы включить текст до и после примера. DavidPostill 6 лет назад 0
@TwistyImpersonator да minamon 6 лет назад 0
Пожалуйста, [отредактируйте] свой вопрос, чтобы уточнить, что Twisty Impersonator 6 лет назад 0
@DavidPostill ОК minamon 6 лет назад 0
@TwistyImpersonator сделано minamon 6 лет назад 0
@minamon вы допустили орфографическую ошибку, но это не так. Я просто исправил это barlop 6 лет назад 0
@ barlop спасибо ..................... minamon 6 лет назад 0

2 ответа на вопрос

0
Computing Corn

Я не думаю, что есть какая-либо программа (с которой я столкнулся), которая предназначена для вашей проблемы.

Лучшее, что я могу предложить, - это написать скрипт на языке Python 3.

Если вы не знакомы с программированием, моя лучшая ставка - отправиться в стек, чтобы представить вашу проблему.

Извините, если это не подходящая альтернатива.

Вы должны узнать о регулярных выражениях и захвате barlop 6 лет назад 0
@Computing Corn да, вы должны minamon 6 лет назад 0
0
barlop

шаг 1-

найти- .*?(?=password:)(password.*?)(?=(,|\s))
заменить на-\r\n\r\n$1\r\n\r\n

Некоторое объяснение - эта часть находки .*?(?=password:)совпадает с точкой, в которой она может смотреть вперед, то есть непосредственно справа от курсора, и видеть слово пароль: справа от курсора. Затем у вас есть эта часть поиска, (password.*?)она соответствует и фиксирует слово «пароль» до того, что будет упомянуто далее. Затем у вас есть эта часть находки с (?=(,|\s))надписью lookahead, то есть непосредственно справа от курсора, для запятой или некоторого пробела, такого как пробел или конец строки. Поэтому, когда вы смотрите на (пароль. *?), .*? Часть этого поднимется до этой точки.

Скажи у тебя

обратите внимание, что я отмечал, что точка соответствует новой строке при выполнении этого регулярного выражения, как показано на рисунке на imgur. И обратите внимание, что на картинке выше есть 4 пароля.

Запуск, который находит / заменяет, производит следующее (изображение ниже)

Шаг 2

Тогда нужно только удалить пустые строки, в notepad ++ можно выполнять операции редактирования .. строк .. удаления пустых строк

Подойдет любой текстовый редактор с поддержкой регулярных выражений, например Notepad ++

Обратите внимание: в более ранней ревизии было более простое регулярное выражение, которое не имело смысла для строки, встречающейся несколько раз (например, она только что показывала последнюю). Это решение обеспечивает все время появления строки.

Я знаю, что мы ждем, чтобы ОП уточнил, но я предполагаю, что слово * пароль * появляется в файле несколько раз. С учетом того, что вы говорите: * "note- Постарайтесь убедиться, что слово" пароль "не встречается в файле дважды" *, что произойдет / можно сделать, если оно появится несколько раз? Twisty Impersonator 6 лет назад 0
@TwistyImpersonator Это регулярное выражение будет / 'должно' вызвать последнее. Небольшая настройка, поэтому `. *? (? = Пароль) (пароль [^,] *),. *` Получит первый. Но идеальная вещь, которую можно пожелать, если есть несколько паролей, это сохранить их все и удалить все остальное .. barlop 6 лет назад 0
@TwistyImpersonator решение для этого, которое состоит из двух шагов (возможно, это может быть сделано за один шаг), хотя я считаю, что часто выполнять регулярные выражения в несколько шагов - это самый простой и понятный способ. Так что https://i.imgur.com/ivmzIf8.png, в котором говорится, что find-`(? = Пароль:). *? (? = [\ S,])` замените на `\ r \ n \ r \ n $ 0 \ r \ n \ r \ n` Тогда каждый пароль будет в отдельной строке. Тогда это простое регулярное выражение может сказать, что любая строка, которая не начинается с пароля, может быть очищена. поэтому найдите-`^ (?! пароль). * $` замените на (пусто). barlop 6 лет назад 0
@TwistyImpersonator обратите внимание, что я отмечал, что точка соответствует новой строке при выполнении этого регулярного выражения, как показано на изображении imgur. Это приводит к https://i.imgur.com/tVoYscn.png Тогда нужно только удалить пустые строки, в notepad ++ можно выполнить редактирование .. строковые операции .. удаление пустых строк. barlop 6 лет назад 0
@ barlop большое спасибо, что это сработало, сработало .. я так счастлив, что долго искал это. но я сделал последний шаг с EmEditor, что была проблема с блокнотом ++ ... пожалуйста, добавьте последнюю часть решения, чтобы я проголосовал и отметил его как лучший ответ. minamon 6 лет назад 0
@TwistyImpersonator спасибо тоже `но я думаю, что слово пароль появляется в файле несколько раз` minamon 6 лет назад 0
@minamon done .. Я немного настроил регулярное выражение, чтобы оно получало пароль в последней строке, потому что я не думаю, что это было раньше ... всегда стоит проверять эти вещи barlop 6 лет назад 0
@ barlop большое спасибо, но есть еще один последний вопрос ... перед выполнением процесса найдено 3491 совпадений слова пароль ... после завершения процесса найдено только 3477 паролей ... почему? Вот текстовый файл, который можно увидеть самостоятельно [ссылка] (https://ufile.io/zkjta) minamon 6 лет назад 0
@minamon Я посмотрю на это .. Я заметил, что пароль встречается 3491 раз. Но `пароль:` встречается 3472 раза. Одна проблема связана с вашими данными: в строке 579-580 конец строки 579 говорит пароль, а затем конец строки. Затем на следующей строке стоит двоеточие. Таким образом, у вас есть новые строки в ваших данных, которых не должно быть. Так, например, если вы открываете обычный блокнот, убедитесь, что панель view..status снята. Убедитесь, что перенос слов снят. Затем отредактируйте ... перейдите к строке 579. Затем перейдите в конец строки barlop 6 лет назад 0
Я сделал, но он говорит пароль: EL-Samar, minamon 6 лет назад 0
@ barlop примечание, я удалил все "(кавычка) из текстового файла, чтобы я мог правильно разграничить его в Excel, что я могу скопировать пароли. minamon 6 лет назад 0
кавычки не будут иметь значения, но я сделал подсчет для `password [\ s] *:` (таким образом, за паролем следует любой пробел, за которым следует двоеточие), поэтому, если двоеточие заканчивается на новой строке, тогда хорошо. И это получает 3483 пароли. Это, вероятно, правильный номер. Есть моменты, когда фраза типа `пароль: пароль` или` пароль: nopasswordrequired`, поэтому она не должна подобрать пароль второго термина там. barlop 6 лет назад 0
может потребоваться немного возиться, чтобы получить точное выражение. Но стремление к 3483 заменам выглядит правильным. Поэтому попробуйте это регулярное выражение `. *? (? = Пароль [\ s] *:) (пароль. *?) (? = (, | \ S))` Это перехватывает 3484 barlop 6 лет назад 0
@ barlop привет, спасибо, что ловит 3488 после выполнения шагов .. большое спасибо. minamon 6 лет назад 0
@ barlop извините моя ошибка, я искал с паролем слова вместо. *? (? = пароль [\ s] *:) (пароль. *?) (? = (, | \ s)) .... вот количество других файлов со старым новым регулярным выражением, но с поиском слова пароль ............... 1- 3477-3488 2- 19646-19654 3- 59532-59538. .. это немного улучшило это, и это здорово. большое спасибо ... не забудьте отредактировать ответ с новым регулярным выражением. я так счастлив, что ты был здесь, чтобы ответить мне minamon 6 лет назад 0
@minamon нет проблем. Если вы ищете «пароль», то, если у кого-то есть пароль, записанный в его пароле, он его подберет, но вы этого не хотите. Или, если файл содержит слова «Вот пароли», тогда он подберет слово «пароль». Таким образом, `пароль:` т.е. с двоеточием, подберет меньше, чем 'пароль`. Но иногда вы получаете пароль, тогда двоеточие находится на новой строке. Так что `пароль [\ s] *:` это хорошо. Имея больше знаний о регулярных выражениях, вы можете проверить, например, где слово «пароль» встречается без двоеточия после него. Таким образом, вы можете найти несоответствия. barlop 6 лет назад 0
@minamon Например, если вам интересно, где у вас есть пароль, а не двоеточие, вы можете искать, например, `пароль (?! :)`, как иногда у вас двоеточие в следующей строке. Таким образом, в то время как поиск пароля может забрать слишком много, поиск `password:` может забрать слишком мало. Подобные поиски могут найти ваши расхождения barlop 6 лет назад 0
@ barlop спасибо очень очень .. я многому у тебя научился сегодня minamon 6 лет назад 0
@minamon нет проблем barlop 6 лет назад 0
@barlop minamon 6 лет назад 0