如何从Linux命令的输出中提取单个单词?

时间:2018-06-12 10:40:17

标签: linux bash shell

$ lsusb --verbose | grep "THRSL_C_C_V"

结果:
  iManufacturer 1 THRSL_C_C_V3.07

我只想提取单词THRSL_C_C_V3.07

我试过了lsusb --verbose | grep -w "THRSL_C_C_V"。没有显示任何内容。

3 个答案:

答案 0 :(得分:2)

尝试:

lsusb --verbose | grep -o "THRSL_C_C_V3\.07"

-o选项只会导致匹配的文本,反向间距会使点数转义,从而允许与请求的文本完全匹配。

答案 1 :(得分:1)

您可以使用awk代替grep

lsusb --verbose | awk '/THRSL_C_C_V/{print $3}' 

awk命令会搜索其中包含文字THRSL_C_C_V的行,并使用print $3确保打印匹配行的第3列。

或者您可以像这样使用grep -o

echo 'iManufacturer        1 THRSL_C_C_V3.07' |
grep -oE 'THRSL_C_C_V[^[:blank:]]*'

THRSL_C_C_V3.07

答案 2 :(得分:1)

使用以下内容: -

$ lsusb --verbose | grep "THRSL_C_C_V" |  awk '{print $NF}'

$ lsusb --verbose | awk '/THRSL_C_C_V/{print $NF}'

这里,$ NF将用于输出的最后一个元素