Shellr57s
@Shellr57s

Что нужно установить и сделать, чтобы начать пользоваться?

Всех приветствую,
Я практиковался регуляркам на regex101.com, сейчас же хочу уже перейти к выполнению реально нужных задач. Но через Notepad++ не всегда выходит сделать, или нужно бывает ломать голову под него отдельно, то есть, вот элементарно: я хочу оставить в тексте то что "заматчилось" и у него режима "листа" нету, только замена; или же бывает некоторые особые метасимволы не так, или в целом не работают. По этой причине и обращаюсь к вам. Что мне скачать/установить что прописать чтобы прийти к возможности вписать оригинальную регулярку (pcr2) указать файл где искать, и файл куда результат матча записывать.
Заранее спасибо, за ответы.
P.s: я не кодер, и в целом нужды такой нету, но вот это нужно, а то загонять парой 500к+ строк в онлайн на тот сайт и запускать такое себе развлечение xD
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 3
trapwalker
@trapwalker
Программист, энтузиаст
Консоль линукса и команду grep. Там много аргументов и возможностей.
Команда sed - это фактически консольный потоковый текстовый редактор. Очень мощный, но сложный в понимании. Проще освоить питон и пользоваться для ваших целей вот такими однострочниками:
$ man py | py 're.compile("\w{10,}").findall(sys.stdin.read())'
completion
expression
DESCRIPTION
expression
interpreter
compatible
expression
expression
arithmetic
automatically
distribution

Что тут происходит:
Берём справку по консольной тулзе pythonpy, конвейером передаём в эту утилиту, которая выполнит кусочек питоновского кода. Код читает всё, что приходит на вход и находит все слова длинной 10 и более символов.
Ответ написан
Комментировать
ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант
Когда аналогичная задача появилась - сделал утилиту на C# простейшую, и ей пользовался.
Ответ написан
shurshur
@shurshur
Сисадмин, просто сисадмин...
Самый простой способ - использовать perl. У него есть специальные ключи, которые автоматизируют выполнение из командной строки, цикл и печать в конце цикла. В результате команде можно передать просто регулярку или сделать простой однострочник, применяемый к каждой строке файла.

Ключ -e заставляет считать первый аргумент кодом, а не именем файла.
Ключ -n оборачивает этот код в цикл while(<>) { ... }
Ключ -p добавляет в конец print.

В результате команда perl -pne 's/foo/bar/' превращается в аналог скрипта такого содержания:

while(<>) {
  s/foo/bar/;
  print;
}


Конечно, как нетрудно догадаться, такой вызов аналогичен вызову sed s/foo/bar/ Таким образом, perl можно использовать почти как sed или awk, только с более богатыми регулярными выражениями и более широкими возможностями программирования.

Например:

some_command|perl -pne 's/foo/bar/g; s/lorem (\d+)/\1 ipsum/g' > output.txt
perl -ne '/([_\w]+)\s*=\s*"(.+)"/ && print "key $1 value $2\n"' /etc/environment
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽