Согласование нескольких шаблонов на одной строке

Я часто использую программу tty0tty , которая создает нулевой модем с использованием PTY. Теперь я хочу сделать его частью автоматизированного процесса.

Когда я начинаю tty0tty он печатает

 (/dev/pts/1) <=> (/dev/pts/2) 

Можно ли было бы разобрать результат и использовать совпадения в качестве параметров для другой программы? Чтобы автоматизировать следующие строки:

 linux$ tty0tty & (/dev/pts/X) <=> (/dev/pts/Y) linux$ someprogram /dev/pts/X & linux$ microcom /dev/pts/Y 

  • Невозможно использовать escape-последовательности в переменной в команде sed
  • Обратное совпадение в sed, замените противоположное тому, что было найдено
  • Соответствие значений в столбцах
  • Извлечение строк из файла в зависимости от других строк
  • Нет результата при использовании нескольких файлов write & sed в сценарии оболочки
  • Удалите кусок строк в соответствии с порядковыми номерами
  • sed: захват и замена всех данных между последней обратной косой чертой и запятой
  • Почему мое регулярное выражение не работает с помощью sed в сценарии bash на Mac OSX?
  • One Solution collect form web for “Согласование нескольких шаблонов на одной строке”

    Вы можете использовать sed и замену процессов :

     read left right < <(tty0tty | head -n 1 | sed -e 's/[()<=>]//g' &) 

    После этого $left/dev/pts/X а right/dev/pts/Y

    Это немного обманывает – мы просто заменяем символы ( , ) , < , = , и > ничем, а затем полагаемся на разделение слова оболочки после этого.

    Мы tty0tty вывод tty0tty в head поэтому мы принимаем только первую (только) линию вывода и не блокируем навсегда. Оттуда он переходит в команду sed которая выполняет замену, а затем использует read bultin оболочки, чтобы привязать переменные оболочки left и right к первому и второму словам ввода, который мы ему даем. Мы получаем этот ввод из <(...) . <(...) запускается ... в подоболочке и связывает его вывод с трубой, с которой мы можем читать. Мы пропитываем эту трубу в первый, а затем получаем /dev/pts/X /dev/pts/Y и разделяем ее на два слова, которые мы хотели.

    После этого вы можете запустить someprogram $left и someprogram $left усмотрению.

    Interesting Posts

    Я не могу подключиться к Wi-Fi, без wlan0-устройства на iwconfig

    Какие команды Unix можно использовать в качестве семафора / блокировки?

    Что вызывает изменение идентификатора PCI

    Почему сортировка меняет порядок строк с одинаковыми ключами сортировки?

    Awk – сопоставление по 2 столбцам для разных строк

    получить fn + регулятор громкости, работающий в xfce

    изменять размеры значков в приложениях Gtk + 3

    urxvt-play mp3 вместо звукового сигнала

    Как я могу прекратить использование групп setxkbmap из ключей модификатора привязки?

    Является ли `dig ptr` допустимым способом выполнения обратного DNS-запроса?

    Как я могу настойчиво загружаться в linux-grsec?

    Как включить STARTTLS в операционной системе Unix

    Самый простой способ дублирования каталога по FTP

    Сценарий оболочки, выполняющий два сценария Perl на основе ввода

    Как создать подкаталог, в котором у моей группы нет разрешений на запись?

    Linux и Unix - лучшая ОС в мире.