Почему sed не заменяет после матча?

Я создал небольшой скрипт на Python, чтобы помочь вам с этим. Пожалуйста, взгляните наhttps://github.com/zioalex/unused_apache_modules

Вот что от него можно ожидать:

curl http://localhost/server-info > http_modules_test.txt
cat http_modules_test.txt| python find_unused_apache_mod.py

1
Module name mod_python.c
Configuration Phase Participation: 4
Request Phase Participation: 11
Current Configuration: 3

2
Module name mod_version.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 1

3
Module name mod_proxy_connect.c
Configuration Phase Participation: 0
Request Phase Participation: 0
Current Configuration: 0

To remove safely:
 ['mod_proxy_connect.c']
POPPED:  mod_proxy_connect.c

To KEEP:  ['mod_python.c', 'mod_version.c', 'mod_proxy_connect.c']

0
08.08.2020, 10:37
1 ответ

x*означает любую последовательность из 0 или более xэс. Это сокращение от x\{0,\}. Таким образом, он совпадает и с пустой строкой. Чтобы соответствовать 1 или более, это \{1,\}, которое, если вы включите расширенное регулярное выражение с -E(, только некоторые sedреализации )можно сократить до +.

Обратите внимание, что [0-9]часто означает любые элементы сортировки, которые сортируются между символом 0и символом 9, что в зависимости от локали, ОС или реализации sedозначает не только 0123456789.

Так:

sed 's/[0123456789]\{1,\}/(&)/g'

или:

sed -E 's/[0123456789]+/(&)/g'
2
18.03.2021, 23:14

Теги

Похожие вопросы