Как получить значение 1,0 из этого строкового вывода aplay -l?
У меня есть эта строка вывода, где я пытаюсь получить выходное значение как: 1,0, удалив все остальные.
ех.
$ aplay -l | grep "C-Media USB Audio Device"
card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]
$ aplay -l | grep "C-Media USB Audio Device" | awk '{print $2}'
1:
$ aplay -l | grep "C-Media USB Audio Device" | awk '{print $9}'
0:
Но как сразу получить значение как 1,0? даже если строка немного больше, но где-нибудь есть карта и устройство?
Например: неправильно
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: CA0132 Analog [CA0132 Analog]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [C-Media USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
$ aplay -l | grep "HDA NVidia" | perl -anE 's/://g, say for $t="$F[1],$F[8]"'
2,0
$ aplay -l | grep "HDA Intel PCH" | perl -anE 's/://g, say for $t="$F[1],$F[8]"'
0,CA0132
0,HDMI
$ aplay -l | grep "C-Media USB Audio Device" | perl -anE 's/://g, say for $t="$F[1],$F[8]"'
1,0
1 ответ
Решение
aplay -l | grep "C-Media USB Audio Device" | perl -anE 's/://g, say for $t="$F[1],$F[8]"'
и для других устройств это удаляет все между []
а также :
голец,
aplay -l | grep "C-Media USB Audio Device" | perl -nE 's/ \[.*?\] | : //xg; say join",",(split)[1,5];'