Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
1

Удалить всю строку, если в ней найдено определенное слово

02.06.2014, 12:36. Показов 7029. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Есть два слова "Microsoft" и "Apple".
Есть файл , в котором имеются строки:

Средство обновления данных часового пояса для Microsoft Office Outlook
Microsoft Office Proof (Russian) 2010
Citrix Receiver(SSON)
Apple Tunes
Apple forever Русская версия

Как выполнить удаление ВСЕХ строк, в которых встречаются слова "Microsoft" и "Apple"?
Удалить именно строки, а не слова.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 12:36
Ответы с готовыми решениями:

Как удалить строку в случае если в ней содержится определенное слово?
Как удалить строку в случае если в ней содержится определенное слово? Если использовать встроенную...

Ввести строку и слово. Удалить слово из строки, если она в ней содержится.
Ввести строку и слово. Удалить слово из строки, если она в ней содержится. вот что получилось: ...

Сравнить каждый элемент с каждым, если есть совпадение, то соединить всю строку, в которой найдено совпадение
Доброго времени суток! Есть два массива строк разного размера (элементы массива разделены...

Удалить строку если опеределенная ячейка в ней пуста, если нет - оставить
Добрый день! Подскажите пожалуйста, как сделать: Есть лист excel, в котором находятся данные....

10
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.06.2014, 14:14 2
Лучший ответ Сообщение было отмечено Kir@ как решение

Решение

Bash
1
@findstr /irv "\<Microsoft\> \<Apple\>" "source.txt">"destination.txt"
4
90 / 58 / 7
Регистрация: 07.02.2010
Сообщений: 730
02.06.2014, 15:05  [ТС] 3
Цитата Сообщение от ComSpec Посмотреть сообщение
Bash
1
@findstr /irv "\<Microsoft\> \<Apple\>" "source.txt">"destination.txt"
Строчка сколько условий принимает? Ограничения какие? У меня 144 фразы на удаление.

Добавлено через 27 минут
Чё-то с синтаксисом напутал, сейчас исправил уже 50 значений, полет нормальный.
0
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
02.06.2014, 15:54 4
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Kir@, если будут проблемы с длиной строки, то попробуйте так:
Bash
1
@findstr /irvg:"frases_for_string_deleting.txt" "source.txt">"destination.txt"
, где в файле "frases_for_string_deleting.txt" приведите список ключевых фраз:

Код
\<Apple\>
\<Microsoft\>
\<Some frase\>
\<...\>
.


Кстати, если кроме слов в списке действительно присутствуют фразы, то в первом варианте надо писать так:

Bash
1
@findstr /irv /c:"\<Microsoft\>" /c:"\<Apple\>" /c:"\<Some phrase\>" "source.txt">"destination.txt"
.
3
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 43
21.03.2015, 08:08 5
ComSpec, подскажи, пожалуйста, почему в коде два разных названия текстовых файлов? Ведь по условию нужно удалить строки в одном. Или создаётся второй отредактированный?
0
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
21.03.2015, 10:32 6
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Hitogui, в коде действительно фигурируют два файла: исходный и изменённый. Это нужно при тестировании кода для удобства сравнения первоначального текста с результатом работы кода и исключения потери исходного содержимого в случае "нештатной ситуации". А заменить исходный файл новым можно всегда, добавив в конец кода (перед "exit/b") строку
Bash
1
>nul move/y "destination.txt" "source.txt"
.

Если же нужно, чтобы в коде фигурировало имя только одного файла, то можно (а если обрабатываемый файл является скрытым и (или) системным и (или) имеет атрибут "Только чтение", то и нужно) использовать такой код:
Bash
1
@for /f "delims=" %%i in ('findstr /irv "\<Microsoft\> \<Apple\>" "source.txt"^& del/a/f "source.txt"') do @echo.%%i>>"source.txt"
.
1
0 / 0 / 0
Регистрация: 19.03.2015
Сообщений: 43
21.03.2015, 17:39 7
ComSpec, теперь разобрался. Спасибо!

С благодарностью и уважением.
0
0 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 23
05.11.2015, 18:04 8
Схожая задача и у меня. только вот проблема что если слово приклеено к другому то не удаляет строку..
Мне вот например нееобходимо удалить строку содержащую \\ но они могут быть приклеены к другим символам..
0
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
05.11.2015, 18:39 9
Windows Batch file
1
@<"source.txt">"destination.txt" find/v "\\"
1
0 / 0 / 0
Регистрация: 18.02.2015
Сообщений: 23
05.11.2015, 20:38 10
Спасибо, а если несколько ключевых слов?
0
3460 / 1998 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
05.11.2015, 21:17 11
Windows Batch file
1
@<"source.txt">"destination.txt" (find/i /v "word_1"| find/i /v "word_2"| find/i /v "word_3")
1
05.11.2015, 21:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2015, 21:17
Помогаю со студенческими работами здесь

Найти слово в строке, если найдено - удалить все строки ниже строки с найденным
Есть memo в котором храниться разное кол-во строк. Допустим: 100 строк, найти строку с фразой...

Удалить всю строку, если определенная ячейка пустая
Добрый день! Нужен макрос, который будет удалять всю строку, если ячейка в столбце &quot;А&quot; пустая.

Скопировать строку на новый лист, если ячейка содержит определенное СЛОВО в тексте - VBA
Имеется код который копирует строки с определенным значением ячейки. Sub perenos() Dim i&amp;...

StringGrid скопировать строку если в ней есть нужное слово
Eсть 2 StringGrid'a, в первом куча записей, второй пустой. Нужно из первого вставить строку во...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru