Shell-Script

我怎樣才能只返回我的 grep 結果的一部分?

  • October 3, 2021

目前我的腳本中有目前命令:

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

引用自:https://unix.stackexchange.com/questions/671686