С помощью awk чтение первого файла в массив и печать из него на основе второго файла. Входные данные не нужно сортировать здесь:
$ awk 'FNR==NR { a[$1] = $2; next } { print $1, a[$1] }' file1 file2
a 1
a 1
b 2
c 3
c 3
c 3
d 4
d 4
Я нашел эти два ответа, которые вместе решили мои проблемы:
https://unix.stackexchange.com/a/182294/149203
https://unix.stackexchange.com/a/462671/149203
На этих страницах предлагается изменить файл /etc/pulse/default.pa
, чтобы сделать изменения постоянными, но мой опыт показывает, что после обновления системы такого рода изменения обычно вызывают проблемы.
Итак, я сделал следующий bash-скрипт, который решил мою конкретную проблему:
#!/bin/bash
pactl set-card-profile 1 output:analog-stereo
SINK=`pacmd list-sinks | grep 'index' | egrep -o '[0-9]*'`
pacmd set-sink-port $SINK analog-output-lineout
Команда
pacmd list-cards | grep 'active profile'
позволяет проверить активный профиль. (Вкладка «Конфигурация» в pavucontrol
), а
pacmd list | grep "active port"
показывает активный порт. (Вкладка «Устройства вывода» ).