如果我试图查找硬盘驱动器连接到哪个主机总线,我会使用
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 脚本很陌生,我无法充分利用这种强大的脚本语言。
谢谢!
用斜线分割,选择最后一个字段,用冒号分割并选择第一个结果:
ls -ld /sys/block/sd*/device | awk -F'/' '{ split( $NF, arr, /:/ ); print arr[1] }'
它产生:
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 ...