[identity profile] mef-is-toffel.livejournal.com posting in [community profile] useful_faq
Возникла задача обработки отчетов, несколько гигабайт файлов, обычный текст. Отчеты разного размера, от нескольких строк до десятка тысяч строк. Необходимо удалить из этих фалов все строки, содержащие определенную последовательность символов.

То есть, например, удалить все строки с текстовой последовательностью "авить" и из файлика с текстом
-----------
Не мысля гордый свет забавить,
Вниманье дружбы возлюбя,
Хотел бы я тебе представить
Залог достойнее тебя
-----------

и получить такой текст:
-----------
Вниманье дружбы возлюбя,
Залог достойнее тебя
-----------

В идеале хотелось бы найти какую-то консольную шуструю утилитку, которую можно натравить на эту кучу фалов в пакетном режиме, но, возможно есть и другие способы?

UPD:
В итоге остановился на sed, сделал батник со строкой
for %%A in (*.txt) do sed -e "/строка1/d" -e "/СТРОКА1/d" %%A > C:\NEW\%%A
Здесь строка1 и СТРОКА1 -- требуемые последовательности в разных регистрах. В принципе, в sed есть флаг I, но у меня он что-то не заработал, поэтому так.
Закидываю его в каталог с отчетами, запускаю, и все файлы с расширением txt копируются в каталог C:\NEW\. Не удалось выполнять для подкаталогов /R, ну это ладно, обойдусь.
Можно и из командной строки:
for %A in (*.txt) do sed -e "/строка1/d" -e "/СТРОКА1/d" %A > C:\NEW\%%A

Еще раз спасибо!

Date: 2016-11-30 06:21 am (UTC)
From: [identity profile] xz100500.livejournal.com
grep -v 'авить' file.txt > file2.txt

как работает с нелатинской локалью под венды не знаю - надо пробовать.
есть под cygwin, так и нативно собранная
Edited Date: 2016-11-30 06:22 am (UTC)

Date: 2016-11-30 06:34 am (UTC)
From: [identity profile] langsamer.livejournal.com
sed и awk под винду: http://unxutils.sourceforge.net/

Date: 2016-11-30 09:40 am (UTC)
From: [identity profile] stanislav-v-l.livejournal.com
sed / awk - это из пушки по воробьям, если только удалить строки - grep достаточен.
Конечно, знания лишними не бывают :), но если надо побыстрей сделать ...

Date: 2016-11-30 11:09 am (UTC)
From: [identity profile] stanislav-v-l.livejournal.com
Возможные источники проблемы:
а) Кодировка: скажем, в файле у Вас кодировка 1251, а то что Вы пишете в командной строке - 866 (спасибо, Билли!). Выход: запишите команду в командный файл (и убедитесь, что командный и обрабатываемый - в одной кодировке!) и запускайте именно командный.
б) Кавычки/апострофы: в документации, делавшейся для пользователей unix/linux , во всех примерах наверняка шаблон заключен в апострофы:
grep 'образец' file.txt
Но командный интерпретатор доса/винды их не отбрасывает, в отличие от unixового. Т.е., с большой вероятностью они становятся частью шаблона, а такого шаблона у Вас в файле и нету, само собой... Выход: попробуйте записать шаблон без кавычек/апострофов:
grep образец file.txt
Возможно также, что Ваш grep умеет брать шаблон из указанного файла - тут надо смотреть доки, есть разные версии grep

Date: 2016-11-30 11:51 am (UTC)
From: [identity profile] stanislav-v-l.livejournal.com
Просто в Вашем примере кириллица - вот я и подумал ...

Date: 2016-11-30 06:35 am (UTC)
From: [identity profile] langsamer.livejournal.com
Ну и grep там же, да

Date: 2016-11-30 06:28 am (UTC)
From: [identity profile] kincajou.livejournal.com
omg, несколько гигабайт.. паезии...

Date: 2016-11-30 10:27 am (UTC)
From: [identity profile] ergil-reborn.livejournal.com
GNU sed (https://www.gnu.org/software/sed/)