Получить обновление Lynis на Debian Testing (buster)

Пока stdout и stderr буферизированы по строкам, а строки одного из двух всегда являются пятнистыми, их смешивание не является проблемой: рассмотрите вывод программы где оба stdout и stderr буферизированы по строке, а stderr легко разбивается на пятна:

$ cat file
xxxxxxxxxx
tar: ----------
yyyyyyyyyy
tar: ----------
zzzzzzzzzz
tar: ----------

Извлечение любого из двух с помощью grep ] не проблема:

$ < file grep -v ^tar
xxxxxxxxxx # stdout line 1
yyyyyyyyyy # stdout line 2
zzzzzzzzzz # stdout line 3
$ < file grep ^tar
tar: ---------- # stderr line 1
tar: ---------- # stderr line 2
tar: ---------- # stderr line 3

Однако рассмотрим случай, когда в какой-то момент поведение буферизации stdout меняется на, скажем, небуферизованное:

x
tar: ----------
xxxxxxxxxyyy
tar: ----------
yyyyyyyzzzzz
tar: ----------
zzzzz

Извлечение stdout с использованием grep является проблемой:

$ < file grep -v ^tar
x # wrong stdout line 1
xxxxxxxxxyyy # wrong stdout line 2
yyyyyyyzzzzz # wrong stdout line 3
zzzzz # wrong stdout line 4

Попробуйте вместо этого:

< file perl -0777pe 's/\n?tar: [^\n]*\n//g' > newfile

Что, за исключением случаев [edge], должно извлечь исходный stdout из файла:

$ < file perl -0777pe 's/\n?tar: [^\n]*\n//g'
xxxxxxxxxxyyyyyyyyyyzzzzzzzzzz
2
25.12.2017, 14:08
0 ответов

Теги

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