Поместите разделитель строк в вывод команды - PullRequest
0 голосов
/ 21 июня 2019

как я могу поставить строку разделения в вывод команды:

pacman -Ss linux

я получаю это

community/riscv64-linux-gnu-glibc 2.29-1
    GNU C Library RISCV target
community/riscv64-linux-gnu-linux-api-headers 5.0-1
    Kernel headers sanitized for use in userspace (riscv64-linux-gnu)
community/rt-tests 1.3-1 (realtime)
    A collection of latency testing tools for the linux(-rt) kernel

Я хочу получить

community/riscv64-linux-gnu-glibc 2.29-1
    GNU C Library RISCV target
--
community/riscv64-linux-gnu-linux-api-headers 5.0-1
    Kernel headers sanitized for use in userspace (riscv64-linux-gnu)
--
community/rt-tests 1.3-1 (realtime)
    A collection of latency testing tools for the linux(-rt) kernel

1 Ответ

1 голос
/ 21 июня 2019

Я не использовал pacman, но если вы хотите печатать -- перед каждой строкой, которая не начинается с табуляции , этот awk может помочь:

echo -e '1\n\t2\n3\n\t4\n\t5\n6\n\t7' | awk '{if (NR > 1 && $0 !~ "^\t") print "--"; print $0}'

Результат:

1
    2
--
3
    4
    5
--
6
    7

Объяснение:

if ((NR > 1) && ($0 !~ "^\t")) print "--": если (номер строки больше 1) и (строка не начинается с табуляции), выведите --

print $0: вывести всю строку


Аналогично, если вы хотите напечатать -- после каждых двух строк , это должно сделать:

echo -e '1\n\t2\n3\n\t4\n\t5\n6\n\t7' | awk '{if (NR > 1 && NR % 2 == 1) print "--"; print $0}'

Результат:

1
    2
--
3
    4
--
    5
6
--
    7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...