ansible извлечение без первого каталога

не могли бы вы использовать stdbuf -oL или stdbuf -o0 перед командой awk, как показано ниже;

tail -f firewall.log | sed -nu '/msg=/{s/.*msg=//;s/\S*=.*//;p}' | stdbuf -oL awk '!seen[$0]++' >> outfile.txt

tail -f firewall.log | sed -nu '/ сообщение = / {с /. msg = //; s / \ S =. * //; p} '| stdbuf -o0 awk '! seen [$ 0] ++' >> outfile.txt

man sed;

-u, --unbuffered

загружать минимальные объемы данных из входных файлов и очищать выходные данные { {1}} буферизует чаще

man stdbuf;

stdbuf - Выполнить КОМАНДУ с измененными операциями буферизации для его стандартных потоков .

-o, --output = MODE отрегулировать стандартную буферизацию выходного потока

Если MODE равен 'L', соответствующий поток будет буферизован по строкам. Эта опция недопустима для стандартного ввода.

Если MODE равен '0', соответствующий поток не буферизуется.

Например,

сначала запустите это;

user@h$ tail -f firewall.log | sed -nu '/msg=/{s/.*msg=//;s/\S*=.*//;p}' | stdbuf -oL awk '!seen[$0]++' >> outfile.txt

запустить этот другой терминал; echo msg = "1" >> firewall.log , вывод, как показано ниже;

user@h$ tail -f firewall.log | sed -nu '/msg=/{s/.*msg=//;s/\S*=.*//;p}' | stdbuf -oL awk '!seen[$0]++' >> outfile.txt

user@host$ cat outfile.txt
1

запустить еще раз то же самое echo msg = "1" >> firewall.log , вывод не изменяется;

После запуска этого; echo msg = "2" >> firewall.log , вывод, как показано ниже;

user@host$ tail -f firewall.log | sed -nu '/msg=/{s/.*msg=//;s/\S*=.*//;p}' | stdbuf -oL awk '!seen[$0]++' >> outfile.txt

user@host$ cat outfile.txt

1
2
29
20.02.2017, 18:57
1 ответ

Чтобы удалить bar-version-someFirstLevelFolder, вам нужно использовать опцию --strip-components=1в tar. Таким образом, ваш плейбук должен выглядеть как

- name: Extract archive
  unarchive:
    src: file.tar.gz
    dest: /foo/bar
    extra_opts: [--strip-components=1]
62
27.01.2020, 19:38

Теги

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