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