Значение Bash :слишком велико для базы при использовании даты в качестве ключа массива

Это распечатывает список файлов внутри архива, соответствующих заданному шаблону:

tar --ignore-command-error -xvf PROD_009_010919_0110.tar.gz --to-command="grep -FH 1234536 -" | grep -B1 --no-group-separator '(standard input)' | grep -v '(standard input)'

Опция --to-commandизвлекает каждый файл и отправляет на стандартный ввод команды grep. Опция -vперечисляет каждый файл по мере их обработки.

--ignore-command-errorиспользуется для игнорирования статуса выхода, когда grepне может найти соответствие. Из-за опции -H(печатать имя файла ), используемой с командой grep, каждая совпадающая строка имеет префикс '(стандартный ввод )'.

Это приводит к следующему выводу команды tar:

file1
file2
(standard input): <matched lines from file2>
file3
(standard input): <matched lines from file3>

Передача этого вывода по конвейеру позволяет двум командам grepизвлекать только имена файлов, за которыми непосредственно следует строка ' (стандартный ввод )' на следующей строке. Эту обработку, вероятно, можно было бы улучшить, используя регулярное выражение для соответствия шаблону вместо двух последовательных команд grep, которые я использовал здесь.

Результирующий вывод в этом случае будет:

file2
file3
5
08.02.2021, 11:55
0 ответов

Теги

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