我有 2 个命令可以在我的 linux 系统上输出设备:
$ devlist -t csv -o device,vol_name
device,vol name,
/dev/mapper/mpath62,volume1,
/dev/mapper/mpath63,my_volume,
/dev/mapper/mpath64,foo,
/dev/mapper/mpath65,bar,
/dev/mapper/mpath66,2nd_vol,
$ multipathd -k'show maps'
name sysfs uuid
mpath62 dm-0 20017380029ab0043
mpath65 dm-1 20017380029ab0044
mpath66 dm-2 20017380029ab0045
mpath63 dm-3 20017380029ab0046
mpath64 dm-4 20017380029ab0047
如何合并输出以打印(最好不创建临时文件):
device,vol name,
/dev/dm-0,volume1,
/dev/dm-3,my_volume,
/dev/dm-4,foo,
/dev/dm-1,bar,
/dev/dm-2,2nd_vol,
谢谢
最佳答案
您可以将 awk
与 process substitution
一起使用:
awk -F '[/, ]+' 'FNR==NR{a[$1]=$2; next}
FNR==1{print;next}
$4 in a{printf "/%s/%s,%s,\n", $2, a[$4], $(NF-1)}
' <(multipathd -k'show maps') <(devlist -t csv -o device)
device,vol name,
/dev/dm-0,volume1,
/dev/dm-3,my_volume,
/dev/dm-4,foo,
/dev/dm-1,bar,
/dev/dm-2,2nd_vol,
关于linux - bash 根据另一个命令的输出替换部分命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28880710/