Я мог бы быть неправым, но я не вижу способ выполнить это использование xcalib. Я действительно однако находил это askubuntu Вопросами и ответами названный: Как Вы устанавливаете системные профили цвета отображения в Xubuntu и Lubuntu?.
Походит colord
и color-mgr
инструменты для этой задачи.
с помощью ed
:
ed -s <<'IN'
r !pactl list sink-inputs
/VLC/+,$d
?Sink Input?,.p
q
IN
оно r
заносит вывод команды в текстовый буфер, d
поднимает все после первого совпадения строки VLC
, а затем p
отпечатки с предыдущего совпадения строки Sink Input
до текущей строки.
С помощью sed
:
pactl list sink-inputs | sed -n 'H;/Sink Input/h;/VLC/{x;p;q}'
присоединяется каждая строка к старому буферу H
, если строка совпадает с Sink Input
перезаписывает старый буфер h
, а если строка совпадает с VLC, то ex
меняет место удержания w. pattern space, p
rints и q
uits.
Я бы использовал режим абзаца Perl:
pactl list sink-inputs | perl -00ne 'print if s/(.*?VLC.*?\n).*/$1/ms'
The -00
устанавливает разделитель входных записей на \n\n
, так что "строка" - это абзац. Затем подстановка будет соответствовать всему до первой VLC
, а затем всему до 1-й новой строки и сохранит их как $1
. После этого все удаляется (так как мы заменяем все на $1
). Наконец, "строки", в которых эта замена прошла успешно, печатаются.
Это фактически многострочные записи, разделенные пустой строкой. Awk отлично подходит для работы с такими данными:
pactl list sink-inputs | awk -v RS="" '/VLC/'
Если вы хотите быть очень щепетильным в том, чтобы не включать нижнюю часть записи после первого появления "VLC", то:
pactl list sink-inputs | awk -v RS="" -v FS="\n" '/VLC/{ for(i=1; i<=NF; i++) { print $i; if($i ~ /VLC/) exit}}'