寻找从
中提取音量的方法pactl list sink-inputs
输出示例:
Sink Input #67
Driver: protocol-native.c
Owner Module: 12
Client: 32
Sink: 0
Sample Specification: s16le 2ch 44100Hz
Channel Map: front-left,front-right
Format: pcm, format.sample_format = "\"s16le\"" format.channels = "2" format.rate = "44100" format.channel_map = "\"front-left,front-right\""
Corked: no
Mute: no
Volume: front-left: 19661 / 30% / -31.37 dB, front-right: 19661 / 30% / -31.37 dB
balance 0.00
Buffer Latency: 100544 usec
Sink Latency: 58938 usec
Resample method: n/a
Properties:
media.name = "'Alerion' by 'Asking Alexandria'"
application.name = "Clementine"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "32"
media.role = "music"
application.process.id = "16924"
application.process.user = "gray"
application.process.host = "gray-kubuntu"
application.process.binary = "clementine"
application.language = "en_US.UTF-8"
window.x11.display = ":0"
application.process.machine_id = "54f542f950a5492c9c335804e1418e5c"
application.process.session_id = "3"
application.icon_name = "clementine"
module-stream-restore.id = "sink-input-by-media-role:music"
media.title = "Alerion"
media.artist = "Asking Alexandria"
我想提取
30
来自
行 Volume: front-left: 19661 / 30% / -31.37 dB, front-right: 19661 / 30% / -31.37 dB
注意:可能有多个接收器输入,我只需从接收器输入#67提取音量
由于
P.S。需要这个我的剧本,这应该增加或减少我的音乐播放器的音量。我对linux和bash都是全新的,所以我无法找到解决问题的方法。
编辑: 我的awk版本
gray@gray-kubuntu:~$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits:
max NF 32767
sprintf buffer 2040
答案 0 :(得分:2)
由于您是使用标准文本处理工具的新手,我将提供详细解释的答案。随意使用它。
根据我已安装的GNU Awk
做出此答案,这可能也适用于您系统中安装的mawk
。
pactl list sink-inputs | \
mawk '/Sink Input #67/{f=1; next} f && /Volume:/{ n=split($0,matchGroup,"/"); val=matchGroup[2]; gsub(/^[[:space:]]+/,"",val); gsub(/%/,"",val); print val; f=0}'
Awk
一次处理一行,该行基于/pattern/{action1; action2}
语法。在我们的例子中,我们匹配行/Sink Input #67/
并启用标记(f
)以标记下一行中下一个出现的Volume:
字符串。如果没有设置标志,它可以匹配其他接收器输入的实例。
因此,一旦我们匹配该行,我们使用去限制器/
拆分该行,并获取存储在数组中的第二个匹配元素(matchGroup
)。然后我们使用gsub()
次调用两次,以替换前导空格和其他来删除数字后的%
符号。