Как перенаправить stderr на стандартный вывод, а затем передать (apt -кеш)

Эта последовательность:

[^#]*    # Accept some string of characters that are **not** the start character.
#        # Followed by an start character #
[^@]*    # Followed by an string of **not** ending characters.
@        # Followed by an ending character.

Повторение несколько раз захватило бы (почти )всю линию.

Вот так:

s/[^#]*#\([^@]\)@/\1\n/g

Это преобразует строку ввода в несколько строк в соответствии с запросом.
Единственное, чего не хватает, это стереть то, что может остаться.

sed 's/[^#]*#\([^@]*\)@/\1\n/g;s/\(.*\)\n.*$/\1/'
3
29.10.2020, 19:37
1 ответ

Это потому, что apt-cacheстанет "тихим" и не будет печатать эти строки, если его стандартный вывод не является tty.

Вы можете переопределить это определение, установив его "тихость" на 0:

$ apt-cache -q=0 show contractor 2>&1 | grep virtual
N: Can't select versions from package 'contractor' as it is purely virtual
5
18.03.2021, 22:54

Теги

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