Вопросы с тегом «regular-expression»

Регулярные выражения - это средство сопоставления шаблона символов в строке.

623
Как выполнить поиск для нескольких шаблонов с шаблоном, имеющим символ трубы?

Я хочу найти все строки в нескольких файлах, которые соответствуют одному из двух шаблонов. Я попытался найти шаблоны, которые я ищу, набрав grep (foo|bar) *.txt но оболочка интерпретирует это |как канал и жалуется, когда barне является исполняемым файлом. Как я могу grep для нескольких шаблонов в...

293
Может ли grep выводить только указанные группы, которые совпадают?

Скажи, у меня есть файл: # file: 'test.txt' foobar bash 1 bash foobar happy foobar Я только хочу знать, какие слова появляются после "foobar", поэтому я могу использовать это регулярное выражение: "foobar \(\w\+\)" Скобки указывают, что у меня есть особый интерес к слову сразу после foobar. Но...

243
Как я могу использовать sed для замены многострочной строки?

Я заметил, что если я добавлю \nшаблон для замены с использованием sed, он не будет соответствовать. Пример: $ cat > alpha.txt This is a test Please do not be alarmed $ sed -i'.original' 's/a test\nPlease do not/not a test\nBe/' alpha.txt $ diff alpha.txt{,.original} $ # No differences printed...

86
Как запустить grep с несколькими шаблонами AND?

Я хотел бы получить совпадение нескольких шаблонов с неявным AND между шаблонами, т.е. эквивалентно запуску нескольких greps в последовательности: grep pattern1 | grep pattern2 | ... Так как же преобразовать его в нечто подобное? grep pattern1 & pattern2 & pattern3 Я хотел бы использовать...

85
Использование sed для поиска и замены сложной строки (желательно с регулярным выражением)

У меня есть файл со следующим содержанием: <username><![CDATA[name]]></username> <password><![CDATA[password]]></password> <dbname><![CDATA[name]]></dbname> и мне нужно сделать скрипт, который меняет «имя» в первой строке на «что-то», «пароль»...

77
Почему мое регулярное выражение работает в X, а не в Y?

Я написал регулярное выражение, которое хорошо работает в определенной программе (grep, sed, awk, perl, python, ruby, ksh, bash, zsh, find, emacs, vi, vim, gedit,…). Но когда я использую его в другой программе (или в другом варианте Unix), он перестает совпадать....

65
Grep 'ИЛИ' проблема с регулярным выражением

Я пытаюсь использовать grep с регулярным выражением, чтобы найти строки в файле, которые соответствуют 1 из 2 возможных строк. Вот мой grep: $ grep "^ID.*(ETS|FBS)" my_file.txt Вышеуказанный grep не возвращает результатов. Однако, если я выполню либо: $ grep "^ID.*ETS" my_file.txt или же $ grep...

55
Как различать файлы, игнорируя комментарии (строки начинающиеся с #)?

У меня есть два файла конфигурации, оригинальный от менеджера пакетов и один измененный мной. Я добавил несколько комментариев для описания поведения. Как мне запустить diffфайлы конфигурации, пропуская комментарии? Комментируемая строка определяется как: необязательный начальный пробел (табуляции...

44
Простая замена седана при загадочных ошибках

Это должно быть действительно просто, но по какой-то причине это не работает: sed -i.bak -E 's/\t/ /' file.txt Вместо замены символов табуляции, это замена tсимволов. Я перепробовал все варианты, которые мог придумать, играя с цитатами и т. Д. Я гуглил и нашел всех остальных, использующих довольно...

43
Найти файлы в нескольких именах папок

Я пытаюсь перечислить все файлы из dir1, dir2, dir3и dir4которые могут быть в любом месте , как подкаталог моих с cwdпомощью findкоманды. Я попробовал следующее безуспешно: find . -type f -regextype posix-egrep -regex 'dir1/.+|dir2/.+|dir3/.+|dir4/.+' Я тоже старался posix-extended. Как я могу...

35
Разница между [0-9], [[: digit:]] и \ d

В статье в Википедии о регулярных выражениях кажется, что [[:digit:]]= [0-9]= \d. Каковы обстоятельства, когда они не равны? В чем разница? После некоторого исследования, я думаю, одно отличие состоит в том, что выражение в скобках [:expr:]зависит от...

34
Vim - как заменить одну новую строку \ n двумя \ n

В редакторе vim я хочу заменить символ новой строки (\ n) двумя символами новой строки (\ n \ n) в командном режиме vim. Содержание входного файла: This is my first line. This is second line. Команда, которую я попробовал: :%s/\n/\n\n/g он заменяет строку нежелательными символами как This is my...

31
grep и избегая знака доллара

Я хочу знать, какие файлы имеют строку $Id$. grep \$Id\$ my_dir/mylist_of_files возвращает 0 вхождений. Я обнаружил, что я должен использовать grep \$Id$ my_dir/mylist_of_files Затем я вижу, что $Idцвет на выходе, то есть он был сопоставлен. Как я могу соответствовать второй $и почему не...

31
Проверка, является ли входной номер целым числом

Я пытаюсь проверить, является ли ввод целым числом, и я прошел через него сто раз, но не вижу ошибки в этом. Увы, он не работает, он запускает оператор if для всех входных данных (цифры / буквы) read scale if ! [[ "$scale" =~ "^[0-9]+$" ]] then echo "Sorry integers only" fi Я играл с цитатами, но...