centos 使用lsblk -o name -lpn显示驱动器,提取包含“sd”的字符串

kqlmhetl  于 2022-11-07  发布在  其他
关注(0)|答案(3)|浏览(143)

因此,我已经找遍了所有的地方,在这里做什么,只是找到“从文件”。我期待从命令输出提取。
任务:显示以sd开头的磁盘的绝对路径名。
目前进度:显示磁盘的绝对路径名

[host /]$ lsblk -o name -lpn
/dev/sda
/dev/sda1
/dev/mapper/centos-root
/dev/sda2
/dev/md127
....

所需输出

/dev/sda
/dev/sda1
/dev/sda2
....

我玩过cut、print、awk和sed。
出现语法错误或无输出。

muk1a3rh

muk1a3rh1#

grep

lsblk -o name -lpn | grep "/dev/sd"

啊啊

lsblk -o name -lpn | awk '/dev\/sd/{print}'

已关闭

lsblk -o name -lpn | sed -n '/\/dev\/sd/p'

输出量:

/dev/sda
/dev/sda1
/dev/sda2
vql8enpb

vql8enpb2#

尝试使用sed
lsblk -o name -lpn |sed -n '/\/sd/p'

disho6za

disho6za3#

lsblk接受参数,因此在许多情况下,您可以很容易地说

lsblk -no name -lp /dev/sd?

?只是单个字符的通配符匹配,因此sda、sdb ...
这是一个潜在的陷阱。如果您的磁盘超过26个,或者您正在使用这些唯一磁盘标识符的系统上工作。在这种情况下,您需要将通配符更改为星号,并仅筛选出唯一的结果,

lsblk -no name -lp /dev/sd* | sort -u

输出(对于任一命令):

/dev/sda
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdb
/dev/sdb1
/dev/sdb2

相关问题