다음 스키마가 있고 /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)'