Bash :Как извлечь часть из конца строки, находящейся в переменной?

Вы можете комбинировать несколько директив в файле конфигурации.

Например, на основе вашего кода вы определяете фильтр:

filter f_warn { level(warn); };

, затем пункт назначения:

destination remote_log_server {
 udp("192.168.0.20" port(25214));
};

и соединить их вместе с чем-то вроде:

log { source(src); filter(f_warn); destination(remote_log_server); };

Очевидно, что вы должны настроить source, filterи destinationв соответствии с вашими потребностями.

Я предлагаю вам внимательно прочитать официальное руководство , так как там есть множество опций для настройки ведения журнала.

-2
29.12.2020, 18:06
2 ответа
-) link='https://server123456.eu.somedomain.com/789/storage/uniqueID/uniqueID_db.dat'
-) #.. Remove averything up to last /
-) uid="${link##*/}"
-) echo "${uid}"
uniqueID_db.dat
-) #.. Remove the suffix.
-) uid="${uid%_db.dat}"
-) echo "${uid}"
uniqueID
-) 

В разделе 3.5.3 Справочного руководства GNU Bash их множество.

https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameter-Expansion

Если вам нужна пара uniqueID/uniqueID, это можно сделать с большей осторожностью. Эти конструкции Bash выглядят громоздкими, но они предпочтительнее запуска внешних процессов для редактирования нескольких байтов.

-) link='https://server123456.eu.somedomain.com/789/storage/uniqueID/uniqueID_db.dat'
-) #.. Extract the prefix.
-) pfx="${link%/*/*}"
-) #.. Substring the link from after the prefix.
-) uid="${link:${#pfx}}"
-) echo "${uid}"
/uniqueID/uniqueID_db.dat
-) #.. Clip front and back.
-) uid="${uid#/}"
-) uid="${uid%_db.dat}"
-) echo "${uid}"
uniqueID/uniqueID
-) 
4
18.03.2021, 22:40

Вы можете использоватьawk:

awk -F '[/_]' '{print $(NF-1)}' file

Или grepиcut:

grep -o '[^/]*$' file | cut -d_ -f1

илиgrep -P:

grep -Po '[^/]*(?=_db.dat$)' file

илиsed:

sed -E 's/(.*\/)([^/]*)_db.dat$/\2/' file
2
18.03.2021, 22:40

Теги

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