Regex 如何简化此管道并在列之间留出空间以获得预期的输出?

Regex 如何简化此管道并在列之间留出空间以获得预期的输出?,regex,awk,Regex,Awk,我正在使用下面的命令,输出为 0dev/sdc 1dev/sde 2dev/sdd 使用 但我希望有一个如下的输出 0 dev/sdc 1 dev/sde 2 dev/sdd lsscsi命令的输出 [2:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [3:0:1:0] disk Msft Virtual Disk 1.0 /dev/sdb [5:0:0:0] disk Msf

我正在使用下面的命令,输出为

0dev/sdc
1dev/sde
2dev/sdd
使用

但我希望有一个如下的输出

0 dev/sdc
1 dev/sde
2 dev/sdd
lsscsi命令的输出

[2:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sda
[3:0:1:0]    disk    Msft     Virtual Disk     1.0   /dev/sdb
[5:0:0:0]    disk    Msft     Virtual Disk     1.0   /dev/sdc
[5:0:0:1]    disk    Msft     Virtual Disk     1.0   /dev/sde
[5:0:0:2]    disk    Msft     Virtual Disk     1.0   /dev/sdd

请您尝试以下,书面和测试显示的样本在GNU awk


请您尝试以下,书面和测试显示的样本在GNU awk


您也可以将此替代awk用于更短的正则表达式:

lsscsi | awk '$NF ~ /\/sd[cde]$/ {gsub(/^\[.*:|\]$/, "", $1); print $1, $NF}'

您也可以将此替代awk用于更短的正则表达式:

lsscsi | awk '$NF ~ /\/sd[cde]$/ {gsub(/^\[.*:|\]$/, "", $1); print $1, $NF}'

为什么在egrep上有不区分大小写的匹配?顺便说一句,分区名大写不是标准的。为什么在egrep上有不区分大小写的匹配?顺便说一句,分区名称的大小写不是标准的
your_command | awk '/\/dev\/sd[ced]/{gsub(/.*:|\]$/,"",$1);print $1,$NF}'
lsscsi | awk '$NF ~ /\/sd[cde]$/ {gsub(/^\[.*:|\]$/, "", $1); print $1, $NF}'
0 /dev/sdc
1 /dev/sde
2 /dev/sdd
$ lsscsi | awk -F'[]:[:space:]]+' '/\/sd[cde]$/{print $4, $NF}'
0 /dev/sdc
1 /dev/sde
2 /dev/sdd