현재 내 스크립트에는 현재 명령이 있습니다.
udevadm info /dev/nvme0n1 | grep P:
다음 정보를 반환하려면:
P: /(PCIe address)/nvme0/nvme0n1/
본질적으로 저는 nvme 네임스페이스가 grep의 일부가 되는 것이 아니라 PCIe 주소만 포함되기를 원합니다. sed로 비슷한 작업을 수행한 것을 본 적이 있지만 읽은 후에도 가장 직관적이지 않은 것 같으므로 grep을 사용하는 것이 좋습니다. 만약 내가 할 수 있다면. 감사해요
답변1
사용법이 sed
복잡할 필요는 없습니다 .
다음 sed
명령은 문자열로 시작하지 않는 모든 줄 P:
(첫 번째 표현식)을 삭제한 다음 첫 번째 표현식 /
(두 번째 표현식) 앞의 모든 항목을 삭제하고 /nvme0/nvme0n1/
수정된 줄부터 줄 끝까지의 모든 항목(세 번째 표현식 )을 삭제합니다. ). 이러한 작업에서는 PCIe 주소를 뒤에 남겨 두어야 합니다.
udevadm info /dev/nvme0n1 |
sed -e '/^P:/!d' \
-e 's,[^/]*/,,' \
-e 's,/nvme0/nvme0n1/.*,,'
또는 Stefan이 지적했듯이댓글에서,
udevadm info -q path /dev/nvme0n1