Распечатать вывод команды grep для отступа строк в виде водопадной модели

Попробуйте это,

awk NF=NF RS="" FS="\n" OFS=":" ORS="\n"  File.txt

Record:One
Record:Two
0
06.09.2021, 01:10
1 ответ

Используя GNU awk, мы можем выводить каждую строку ввода с отступом, равным количеству пробелов, соответствующем количеству строк в файле, минус 1.

grep... | awk '{ printf "%2$*1$s\n", NR+length-1, $0 }'

Строка формата printf, используемая здесь, указывает на вывод второго строкового параметра (, которым является $0, текущей строки )с шириной поля, заданной первым параметром (NR+length-1, порядковым номером текущая строка во входных данных плюс длина строки минус 1 ). Результатом этого является то, что строки выводятся в шахматном порядке, что было именно тем эффектом, которого вы хотели.

Большинство не -GNU-реализаций awkне поддерживают более расширенное использование форматов printf, поэтому вам нужно решить эту проблему по-другому.

grep... | awk '{ print indent $0 } { indent = indent " " }'

Приведенное выше может быть легче понять, чем первую команду awk. Мы используем переменную, которую называем indent. Эта переменная содержит только пробелы, и мы добавляем к ней новый символ пробела для каждой строки ввода после вывода текущей строки с префиксом текущего значения indent.

В обоих приведенных выше конвейерах grep...символизирует команду grep, которую вы мимоходом упоминаете в своем вопросе.

0
30.09.2021, 20:51

Теги

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