Shell-Script
我怎樣才能只返回我的 grep 結果的一部分?
目前我的腳本中有目前命令:
udevadm info /dev/nvme0n1 | grep P:
為了返回以下資訊:
P: /(PCIe address)/nvme0/nvme0n1/
本質上,我不希望 nvme 命名空間成為 grep 的一部分,只有 PCIe 地址,我已經看到用 sed 完成了類似的事情,但是即使在閱讀之後它似乎也不是最直覺的,所以如果可以的話,我寧願使用 grep . 謝謝
使用
sed
不需要很複雜。以下
sed
命令丟棄所有不以字元串開頭的行P:
(第一個表達式),然後刪除第一個/
(第二個表達式)之前的所有內容,以及/nvme0/nvme0n1/
修改後的行(第 3 個)中從 到行尾的所有內容表達)。這些操作應該離開 PCIe 地址。udevadm info /dev/nvme0n1 | sed -e '/^P:/!d' \ -e 's,[^/]*/,,' \ -e 's,/nvme0/nvme0n1/.*,,'
或者,正如 Stéphane在評論中指出的那樣,
udevadm info -q path /dev/nvme0n1