Terminal 仅从grep-n中取出前两个值
因此,我使用Terminal 仅从grep-n中取出前两个值,terminal,grep,Terminal,Grep,因此,我使用lsusb | grep-n-Eo'[0-9]{1,3}'来过滤终端中的命令数据。问题是,我想对它进行更多的过滤,得到代表USB总线和设备号的两个特定行。 例如,这里有一个输出(在这里,我想从第1行得到002和001,从第2行得到001和003): 谁能告诉我怎么做?另外,如果您有任何更简单的方法可以使用lsusb从终端获取总线值和设备号,我愿意接受建议 lsusb: lsusb: 在这里,awk可能比grep更好 lsusb | awk '{print $2" &quo
lsusb | grep-n-Eo'[0-9]{1,3}'
来过滤终端中的命令数据。问题是,我想对它进行更多的过滤,得到代表USB总线和设备号的两个特定行。
例如,这里有一个输出(在这里,我想从第1行得到002和001,从第2行得到001和003):
谁能告诉我怎么做?另外,如果您有任何更简单的方法可以使用lsusb
从终端获取总线值和设备号,我愿意接受建议
lsusb:
lsusb:
在这里,awk可能比grep更好
lsusb | awk '{print $2" "substr($4, 1, length($4)-1)}'
使用
GNU grep
,您只能获得遵循总线
或设备
的数字:
grep-noP'(总线设备)\K\d+'
我想要一号线的002和001,二号线的001和003
对此不是很清楚,但如果您只希望前两行匹配,可以使用:
grep-m2-noP'(总线设备)\K\d+'
sed会比grep更好吗?或者也许awk,事实上,是的,awk是一个明显的选择,但我们需要看到OP的预期输出做出一些假设,但完全同意预期输出会有所帮助。或者lssub | awk-F'[:[:blank:]+'{print$2,$4}'
Bus 002 Device 001: ID 2b1d:2341 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 31d3:3125 IMC Networks
Bus 001 Device 002: ID 31d3:67c1 IMC Networks
Bus 001 Device 004: ID 1245:1222 SteelSeries ApS
Bus 001 Device 001: ID 1315:3232 Linux Foundation 2.0 root hub
lsusb | awk '{print $2" "substr($4, 1, length($4)-1)}'