Вы правильно экранировали 1-ю скобку, но не вторую и не {}
, которые также нужно экранировать. Кроме того, вы сопоставляете все до конца строки (.*$
), что не нужно. Используя ваше регулярное выражение, это сделает то, что вы хотите:
$ sed 's/^.*\(\([0-9]\{1,3\}[\.]\)\{3\}[0-9]\{1,3\}\)/\1/' <<< "$var"
3.12.40.53 refunds@example.uk
6.77.11.44 data test@example
5.32.39.153 remix@example.com
5.113.30.37 dummy
9.109.22.6 hello@example.com
8.28.15.55 another
Но это еще сложнее, чем необходимо. Например, вам не нужен [\.]
, достаточно простого \.
. И вы можете использовать флаг -E
, чтобы включить расширенные регулярные выражения и упростить синтаксис до:
$ sed -E 's/^.*(([0-9]{1,3}\.){3}[0-9]{1,3})/\1/' <<< "$var"
3.12.40.53 refunds@example.uk
6.77.11.44 data test@example
5.32.39.153 remix@example.com
5.113.30.37 dummy
9.109.22.6 hello@example.com
8.28.15.55 another
Однако, , как указывает стилдрайвер , ваш интерлиньяж .*
может потреблять больше, чем вы ожидаете, поэтому вместо этого было бы безопаснее сделать все на perl:
$ perl -pe 's/^.*?(([\d]{1,3}\.){3}\d{1,3})/\1/' <<< "$var"
43.12.40.53 refunds@example.uk
66.77.11.44 data test@example
55.32.39.153 remix@example.com
5.113.30.37 dummy
89.109.22.6 hello@example.com
68.28.15.55 68.28.15.55 another
Вы можете добавить свой модуль в папку modules.d, и systemd подхватит его во время загрузки.
поэтому создайте файл с именем /etc/modules-load.d/<featurename>.conf
и пусть он содержит
<modulename>
где имя файла.ko без расширения.ko
вы можете получить документацию для модулей -load.d, набрав man modules-load.d
на своем терминале