Pra*_*kar 4 command-line scripts awk
我有以下命令:
usb_soundcard_sink=$(pactl list short sinks | grep "alsa_output" | awk '{ print $2 }' | tail -n1)
Run Code Online (Sandbox Code Playgroud)
此命令的输出是:
alsa_output.pci-0000_00_1b.0.analog-stereo
Run Code Online (Sandbox Code Playgroud)
这是另一个查找索引号的命令:
var=$(pactl list short sinks | awk '$2=="alsa_output.pci-0000_00_1b.0.analog-stereo" {print $1}')
Run Code Online (Sandbox Code Playgroud)
输出:
0
Run Code Online (Sandbox Code Playgroud)
但我想在上面的命令中传递“usb_soundcard_sink”变量而不是硬编码值,即“alsa_output.pci-0000_00_1b.0.analog-stereo”。“usb_soundcard_sink”变量的 b'coz 值可能会动态变化。
我也尝试了以下方法:
var=$(pactl list short sinks | awk '$2=="$usb_soundcard_sink" {print $1}')
Run Code Online (Sandbox Code Playgroud)
但它不起作用
那么如何将“usb_soundcard_sink”变量的值传递给上述命令
fed*_*qui 19
要在 awk 中使用 bash 变量,您必须使用如下-v
语法:
pactl list short sinks | awk -v myvar="$usb_soundcard_sink" '$2==myvar {print $1}'
# ^^^^^ ^^^^^
# |________________________________|
Run Code Online (Sandbox Code Playgroud)
$ a=3
$ awk -v myvar="$a" 'BEGIN{print myvar}'
3
Run Code Online (Sandbox Code Playgroud)
小智 5
我发现这也有效
line=myfile.dat
f=8
s=11
echo $line | awk '{print $'$f',$'$s'}'
Run Code Online (Sandbox Code Playgroud)
在这里,我将一个名为 myfile.dat 的文件通过管道传输到 awk 中,该文件会输出第 8 列和第 11 列。
归档时间: |
|
查看次数: |
65968 次 |
最近记录: |