运行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
匹配的。如何使用grep
或sed
或 来实现这一点awk
?
编辑:可能pacmd list-sinks
起始位置不对。有没有更好的命令?
答案1
我有一些可以工作的技巧:
pacmd list-sinks | grep -Pzo "\* index(.*\n)*" | sed \$d | grep -e "device.description" | cut -f2 -d\"
解释:
grep -Pzo "\* index(.*\n)*"
输出匹配后的所有行* index
。- 输出的最后一行引起了问题。使用 将其删除
sed \$d
。 grep -e "device.description"
匹配第一个device.description
。- 最后
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