0

如果我试图查找硬盘驱动器连接到哪个主机总线,我会使用

ls -ld /sys/block/sd*/device

它返回

lrwxrwxrwx 1 root root 0 Oct 18 14:52 /sys/block/sda/device -> ../../../1:0:0:0

现在,如果我想解析出上述字符串末尾的“1”,最快的方法是什么?

抱歉,我对 shell 脚本很陌生,我无法充分利用这种强大的脚本语言。

谢谢!

4

2 回答 2

2

用斜线分割,选择最后一个字段,用冒号分割并选择第一个结果:

ls -ld /sys/block/sd*/device | awk -F'/' '{ split( $NF, arr, /:/ ); print arr[1] }'

它产生:

1
于 2013-10-18T22:13:18.523 回答
1

尝试这样做:

$ ls -ld /sys/block/sd*/device |  grep -oP '\d+(?=:\d+:\d:\d+)'
0
2
3

或者

$ printf '%s\n' /sys/block/sd*/device |
    xargs readlink -f |
    grep -oP '\d+(?=:\d+:\d:\d+)'

如果你只想要第一次出现:

grep ...-m1 ...
于 2013-10-18T22:18:45.263 回答