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