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

Мне нужно установить раскладку клавиатуры с помощью setxkbmap перед запуском Wine games, поскольку я использую Dvorak для ввода, и это нарушает элементы управления каждой игрой. То, что я хотел бы сделать, это просто написать сценарий, который захватывает текущую раскладку клавиатуры перед началом игры, сохраняет ее в переменной, а затем восстанавливает ее после завершения игры:

 ORIGINAL_LAYOUT=`setxkbmap -query | grep -P 'layout\:\s{5}(\w+)'` setxkbmap us wine ... setxkbmap $ORIGINAL_LAYOUT 

Проблема, которую я испытываю, заключается в том, что grep соответствует всей строке, а не только моей группе захвата. Есть ли способ для меня просто сбросить группу захваченных записей?

Например, вывод setxkbmap -query :

 rules: evdev model: pc105 layout: dvorak 

Мне интересно схватить макет.

2 Solutions collect form web for “Использование grep для соответствия только группе соответствия в регулярном выражении?”

Попробуйте использовать эту команду awk :

 setxkbmap -query | grep layout | awk '{print $2}' 

или используйте команду cut

setxkbmap -query | grep layout | cut -d : -f2

Вы можете использовать -o и немного изменить grep

  -o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. 

,

 ORIGINAL_LAYOUT=`setxkbmap -query | grep -oP '(?<=layout\:\s{5})\w+'` 

Мы изменили регулярное выражение, чтобы использовать внешний вид, чтобы его не было частью матча

  • Простой способ извлечь ценность из HTML
  • Смутно о границе слова
  • Найти рекурсивный поиск Grep
  • Поиск трубы в grep -v
  • ps | grep показывает плохой результат в подоболочке с заданиями, работающими в фоновом режиме
  • Как безопасно использовать вывод grep в скрипте?
  • Grep для числа, исключая его часть с плавающей запятой
  • Как распечатать перед строк ключевого слова поиска с помощью grep в gz-файле?
  • Поиск строки в файлах
  • Своеобразное поведение grep / heading трубопроводов
  • Как подсчитать вхождения каждого слова, принадлежащего файлу, во все количество файлов `n`, переданных в качестве аргументов?
  • Linux и Unix - лучшая ОС в мире.