从 pulseaudio 中查找默认接收器的 device.description

从 pulseaudio 中查找默认接收器的 device.description

运行pacmd list-sinks | grep -e "index" -e "device.description"输出:

  index: 0
    device.description = "GP106 High Definition Audio Controller Digital Stereo (HDMI)"
  index: 1
    device.description = "Built-in Audio Analog Stereo"
* index: 2
    device.description = "HD 4.40BT"

默认接收器以 开头* index:。在上面的例子中,我想要输出HD 4.40BT

因此问题陈述是:匹配* index,然后输出下一个device.description匹配的。如何使用grepsed或 来实现这一点awk

编辑:可能pacmd list-sinks起始位置不对。有没有更好的命令?

答案1

我有一些可以工作的技巧:

pacmd list-sinks | grep -Pzo "\* index(.*\n)*" | sed \$d | grep -e "device.description" | cut -f2 -d\"

解释:

  1. grep -Pzo "\* index(.*\n)*"输出匹配后的所有行* index
  2. 输出的最后一行引起了问题。使用 将其删除sed \$d
  3. grep -e "device.description"匹配第一个device.description
  4. 最后cut -f2 -d\"仅输出内容。

答案2

我想获取设备名称,我们可以这样做:

# pactl get-default-sink
alsa_output.pci-0000_28_00.4.analog-stereo

为了获得描述,我对接受的答案做了一些改动,使用 sed 而不是 grep 来提取该行后面的其余文件* index,这标志着默认接收器。

# pacmd list-sinks | sed -n '/^\s*\* index/,$p' | grep '^\s*device.description =' | cut -f2 -d\"
Starship/Matisse HD Audio Controller Analog Stereo

相关内容