You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bash提取STMicroelectronics打印机的USB关键信息

提取STMicroelectronics打印机USB关键参数的Bash实现

前提说明

已知目标打印机的USB设备ID为0483:5743,可通过lsusb -vvv -d 0483:5743获取其详细USB描述信息,以下是用Bash工具提取指定参数的方法:


方法1:grep+awk一次性提取并格式化输出

lsusb -vvv -d 0483:5743 | grep -E 'idVendor|idProduct|bEndpointAddress' | awk '
/idVendor/ {printf "idVendor: %s\n", $2}
/idProduct/ {printf "idProduct: %s\n", $2}
/bEndpointAddress/ {
    if ($2 ~ /^0x0[0-9A-Fa-f]$/) printf "endpointOUT: %s\n", $2
    if ($2 ~ /^0x8[0-9A-Fa-f]$/) printf "endpointIN: %s\n", $2
}'

命令解释:

  1. lsusb -vvv -d 0483:5743:输出目标设备的全量USB描述
  2. grep -E:过滤出包含idVendor、idProduct、bEndpointAddress(端点地址字段)的行
  3. awk:按字段匹配处理输出:
    • 直接提取idVendor和idProduct的值
    • 端点地址规则:OUT端点以0x0开头(最高位为0),IN端点以0x8开头(最高位为1),匹配对应模式后输出

方法2:grep单独提取每个参数(灵活按需调用)

使用Perl正则(-P参数)和\K忽略前缀,直接提取目标值:

# 提取idVendor
lsusb -vvv -d 0483:5743 | grep -oP 'idVendor\s+\K0x[0-9A-Fa-f]{4}'

# 提取idProduct
lsusb -vvv -d 0483:5743 | grep -oP 'idProduct\s+\K0x[0-9A-Fa-f]{4}'

# 提取endpointOUT
lsusb -vvv -d 0483:5743 | grep -oP 'bEndpointAddress\s+\K0x0[0-9A-Fa-f]'

# 提取endpointIN
lsusb -vvv -d 0483:5743 | grep -oP 'bEndpointAddress\s+\K0x8[0-9A-Fa-f]'

命令解释:

  • -o:只输出匹配的目标内容,而非整行
  • -P:启用Perl兼容正则,支持\K语法(忽略\K之前的匹配内容)
  • 正则规则:精准匹配参数名后的十六进制值格式

方法3:结构化结果输出

如果需要更清晰的展示格式,可使用组合命令:

echo "=== STMicroelectronics Printer USB Info ==="
printf "idVendor:     %s\n" "$(lsusb -vvv -d 0483:5743 | grep -oP 'idVendor\s+\K0x[0-9A-Fa-f]{4}')"
printf "idProduct:    %s\n" "$(lsusb -vvv -d 0483:5743 | grep -oP 'idProduct\s+\K0x[0-9A-Fa-f]{4}')"
printf "endpointOUT:  %s\n" "$(lsusb -vvv -d 0483:5743 | grep -oP 'bEndpointAddress\s+\K0x0[0-9A-Fa-f]')"
printf "endpointIN:   %s\n" "$(lsusb -vvv -d 0483:5743 | grep -oP 'bEndpointAddress\s+\K0x8[0-9A-Fa-f]')"

内容的提问来源于stack exchange,提问作者DatabaseMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:35:26