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

Так, здесь у меня есть простая команда:

xset -q | grep -e Num -e Caps

Вывод команды:

00: Caps Lock:   off    01: Num Lock:    on     02: Scroll Lock: off

То, что я хочу знать, - то, что, там любые возможности печати только на и от частей, такой как,

  • печать только off после Caps Lock
  • печать только on после Num Lock

Например, если я должен получить состояние Caps Lock, я должен выполнить команду, таким образом, что вывод только

off или on

1
задан 29 November 2015 в 09:35

2 ответа

Используя grep:

% xset -q | grep -Eo '(Caps Lock|Num Lock):[[:blank:]]+[^[:blank:]]+'
Caps Lock:   off
Num Lock:    on
  • (Caps Lock|Num Lock) соответствия или Caps Lock или Num Lock

  • вышеупомянутое будет сопровождаться : и затем класс символов [[:blank:]] соответствия, которые один или несколько располагает с интервалами, или вкладка

  • Их [^[:blank:]]+ будет соответствовать одному или нескольким символам до следующего пространства или вкладки т.е. on или off.

2
ответ дан 3 December 2019 в 06:59

Можно использовать AWK также. Это позволяет печатать столбцы (которые, как по умолчанию предполагается, являются разделенным пространством)

xieerqi:$ xset -q | awk '/Caps/'                                                                      
    00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off
xieerqi:$ xset -q | awk '/Caps Lock/ {print $4" "$8}'                                                 
off off
2
ответ дан 3 December 2019 в 06:59

Другие вопросы по тегам:

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