Искать несколько шаблонов в каждой строке и выводить их в новом файле

В Upstart конфигурация службы находится в файлах в / etc / init / . Например, ssh управляется с помощью файла конфигурации /etc/init/ssh.conf

. Этот файл определяет «события», которые заставят Upstart начать «задание».

Чтобы предотвратить автоматический запуск службы, можно использовать один из нескольких методов:
a) Переименуйте файл service.conf так, чтобы он не заканчивался на .conf
{{1 }} б) Закомментируйте строку "start on" в файле service.conf.

В более новых версиях выскочки (по крайней мере, начиная с версии 1.3) вы также можете переопределить запуск онлайн, используя файл service.override, поэтому вы можете использовать:
# echo manual> / etc / init / service. override

Наконец, вы также можете добавить ключевое слово "manual" в конец файла конфигурации службы, например, через:
# echo manual >> /etc/init/service.conf

Обратите внимание, что это не "остановить" запущенную службу, она просто не дает ей запуститься автоматически. При установке на «ручной» запуск вы управляете службой с помощью initctl, например, для остановки и запуска демона SSH:
# initctl stop ssh
# initctl start ssh

Пожалуй, лучшая документация для Upstart находится на http://upstart.ubuntu.com/cookbook/

Раздел 11.44 посвящен «отключению службы от автоматического запуска», здесь: http://upstart.ubuntu.com/cookbook/#dispting-a- задание-из-автоматически-запускаться

0
26.09.2018, 18:10
3 ответа

Далеко ли

sed -r '/^$/d; s/^[^[]*[[]([^]]*)[]].*cs-categories="([^"]*)".*cs-host=([^ ]*).*/\1\t\3\t\2/' file
24/09/2018:22:41:49 GMT shavar.services.mozilla.com Technology/Internet
24/09/2018:17:45:44 GMT cvshipping.ups.com  Business/Economy
24/09/2018:17:44:03 GMT blocklist.addons.mozilla.org    Software Downloads
24/09/2018:17:41:44 GMT cebwa.d2.sc.omtrdc.net  Web Ads/Analytics
20/09/2018:15:48:50 GMT data35.adlooxtracking.com   Web Ads/Analytics;Suspicious
20/09/2018:15:48:35 GMT www.google.com  Search Engines/Portals

понял?

sed -r '                        use extended regular expressions in the script
/^$/d                           delete empty lines

s/^[^[]*[[]([^]]*)[]].*         look for date time string between square brackets and prepare for 
                                the first "back reference"
cs-categories="([^"]*)".*       look for the string after cs-categories and prepare for second "b r"
cs-host=([^ ]*)                 look for the string after cs-host and prepare for third "b r"
.*/\1\t\3\t\2/                  create output line from back references separated by <TAB> chars.
'
2
28.01.2020, 02:18

Как насчет использования awk:

awk '{t=""; h=""; c=""; for (i=1; i<=NF; i++) {if ($i ~ /^\[/) {t=$i} if ($i ~/^cs-host=/) {h=$i} if ($i ~ /^cs-categories=/) {c=$i}} if ((t != "") && (h != "") && (c != "")) printf("%s %s %s\n", t, h, c)}' _inputfile_

Это приблизительная оценка того, что вы могли бы сделать. По сути, он просто перебирает каждое поле пробела в заданной строке и проверяет, начинается ли строка с определенной строки. Если затем помещает значение этого поля в определенную переменную. После обработки всех полей, если все 3 поля не пусты, он распечатывает поля. Затем он переходит на следующую строку во входном файле.

Я ничего не делал для устранения пробелов в строке. Вы можете выполнить дополнительные проверки в рамках одной из существующих проверок, чтобы увидеть, заканчивается ли строка двойной кавычкой -. Если нет, добавьте следующее поле к переменной.

Я также ничего не делал с подстроками, чтобы избавиться от таких вещей, как [, ] и ". Я оставляю это как упражнение для вас.:)

0
28.01.2020, 02:18

Использование Perl с просмотром -вперед :Таким образом, не имеет значения, идет ли хост до или после категорий

perl -lne '
    m(
        ^\[ (.*?) \]                   # match the timestamp
        (?=.* cs-categories= "(.+?)")  # look ahead for the category
        (?=.* cs-host= (\S+) )         # look ahead for the host
    )x
    and print join ",", $1,$2,$3
' log.txt 
2
28.01.2020, 02:18

Теги

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