![如何使用Linux shell脚本解析给定字符串中的特定键](https://linux22.com/image/147823/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8Linux%20shell%E8%84%9A%E6%9C%AC%E8%A7%A3%E6%9E%90%E7%BB%99%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%B8%AD%E7%9A%84%E7%89%B9%E5%AE%9A%E9%94%AE.png)
我有以下模式,只想解析 /sys/bus/pci/devices/ 和 /device 之间的一个字段
示例 1 输入:/sys/bus/pci/devices/0000:07:00.0/device:0x017a
所需输出:0000:07:00.0
示例 2 输入:/sys/bus/pci/devices/0000:08:00.0/device:0x0abc
所需输出:0000:08:00.0
答案1
如果您的输入总是那么规律,那么一个简单的cut
命令就可以完成这项工作
cut -d/ -f6
例如
% echo /sys/bus/pci/devices/0000:07:00.0/device:0x017a | cut -d/ -f6
0000:07:00.0
% echo /sys/bus/pci/devices/0000:08:00.0/device:0x0abc | cut -d/ -f6
0000:08:00.0
答案2
如果输入没有固定数量的/
,您也可以使用 grep 和上下文:
$ ... | grep -Po 'devices/\K.*?(?=/device)'