У меня есть несколько файлов с некоторыми строками, которые соответствуют этим PCRE:
^([A-Za-z0-9_-]+):.*##(.*)$
^([A-Za-z0-9_-]+)\s*(\?:{1,2})?=(.*)\s*##(.*)$
Так что, конечно, вывод grep выглядит примерно так:
<filename>:$1: ##$2
<filename>:$1 $2 $3 ##$4
Мне нужно, чтобы он выгляделнапример:
<filename>
$1 $4 ($3) from pattern 2
$1 $2 from pattern 1
...
<filename>
$1 $4 ($3) from pattern 2
$1 $4 ($3 from pattern 2 # all pattern 2 matches first
$1 $2 from pattern 1 # ...followed by all pattern 1 matches
$1 $2 from pattern 1
...
Шаблон 1 и 2 соответствуют целям и переменным в Make-файлах соответственно.Вывод будет напечатан в формате - например, с переменными ?=
другого цвета.Как я могу получить выходные данные grep в массиве, которым я могу затем управлять, чтобы произвести выходные данные выше?
Мне пришлось удалить вопрос, где я спросил, как сделать так, чтобы он выглядел красиво, поэтому я хочу пояснить, чтоЯ только спрашиваю, как разобрать вывод grep в массив .Я вообще думаю, что легче помочь, когда я знаю, что кто-то пытается достичь;если это не вы, пожалуйста, помогите мне разобрать этот вывод.Если это так, читайте дальше.
Эта ссылка показывает однострочную строку, которая создает файл автоматической сборки документов.Я не хочу портить окончание, но это выглядит на 99% следующим образом:
help: ## Display this help message and exit
@grep -Eh '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort |
awk 'BEGIN {FS = ":.*?## "};
{printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
Он специально предназначен для целей с комментарием ##
и использует printf
для выравнивания комментариев в столбце 30. Я думаю,было бы полезно включить переменные, а также цели.Я чувствую, что это довольно благородная причина, и очень многое можно сделать очень легко, чтобы результат выглядел лучше, чем то, что производит одна строка (вероятно, с одной строкой!).Я только прошу помощи в разборе вывода grep - это одна из частей bash, в которой я действительно плох - но если у вас есть какие-либо идеи о том, как сделать вывод более приятным, и вам не составит труда поделиться имиЯ бы очень хотел их услышать.