aplay -L
複数のデバイスとその説明を一覧表示するために使用しています。
$ aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
pulse
PulseAudio Sound Server
surround40:CARD=PCH,DEV=0
HDA Intel PCH, ALC1220 Analog
4.0 Surround output to Front and Rear speakers
hw:CARD=PCH,DEV=0
HDA Intel PCH, ALC1220 Analog
Direct hardware device without any conversions
ここでnull
、hw:CARD=PCH,DEV=0
はsurround40:CARD=PCH,DEV=0
デバイス名です。デバイス名と説明でパターンを検索し、説明に一致するデバイス名を見つけたいです。
私の期待は
aplay -L | pattern_match_command "Surround output"
surround40:CARD=PCH,DEV=0
同様に戻る
aplay -L | pattern_match_command "pulse"
返されますpulse
。
デフォルトでは、各デバイスのコンテキストは次のとおりです。
surround40:CARD=PCH,DEV=0
HDA Intel PCH, ALC1220 Analog
4.0 Surround output to Front and Rear speakers
現在説明が含まれていない行処理を使用しています。
aplay -L | grep "pulse"
どのツールを使用できるかについてのヒントがあります。使っていますubuntu 18.04
ベストアンサー1
使用awk
:
aplay -L |
pat='surround' awk '
BEGIN { pat = tolower(ENVIRON["pat"]) }
/^[^[:blank:]]/ { dev = $0; next }
tolower($0) ~ pat { print dev }'
このawk
コマンドは、空白以外の文字で始まる変数のすべての行を記憶しますdev
。他の行が与えられたパターンと一致するたびにdev
変数値が出力されます。
モードは環境変数を介して渡されますpat
。小文字に変換され、変数awk
に保存されますpat
。パターンが行と一致すると、その行も小文字に変換されるため、この意味では、パターン一致は大文字と小文字を区別しません。
サンプルデータに基づいて、上記のコマンドの出力は次のようになります。
surround40:CARD=PCH,DEV=0
surround
この行の単語と一致するので
4.0 Surround output to Front and Rear speakers