BASH在同一行上获取输出

BASH在同一行上获取输出,bash,Bash,我有raid设置,我想将设备ID与安装的驱动器匹配。谢天谢地,输出是相同的0-15。我正在使用的以下命令是: MegaCli -LdpdInfo -a0 | awk '/Target Id:/ {print $3}' MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}' lsscsi | awk '/MR9260-16i/ {print $6}' 我正在编写一个简单的脚本,它从一个put开始工作,然后我添加了第二个输出,该输出不工作,但

我有raid设置,我想将设备ID与安装的驱动器匹配。谢天谢地,输出是相同的0-15。我正在使用的以下命令是:

MegaCli -LdpdInfo -a0 | awk '/Target Id:/ {print $3}'

MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}'

lsscsi | awk '/MR9260-16i/ {print $6}'
我正在编写一个简单的脚本,它从一个put开始工作,然后我添加了第二个输出,该输出不工作,但在第一个输出之后添加了结果,如下所示:

/dev/sdb
/dev/sdc
/dev/sdd
/dev/sde
/dev/sdg
/dev/sdh
/dev/sdi
/dev/sdj
/dev/sdk
/dev/sdl
/dev/sdm
/dev/sdn
/dev/sdo
/dev/sdp
/dev/sdq
/dev/sdr: 104
113
210
211
212
216
217
218
219
220
221
222
223
224
225
226
我说“废话…没用”总之这是我的剧本

# Prints the Device ID of each drive on the Raid Controller.
perform_target() {
    MegaCli -LdpdInfo -a0 | awk '/Device Id:/ {print $3}'
}

# Prints each mounted drive out that is on the Raid Card.
perform_drive() {
    lsscsi | awk '/MR9260-16i/ {print $6}'
}
    printf ' %s\n' "$(perform_drive)" "$(perform_target)";

如果在单独的文件中有两列,可以使用
粘贴
将它们连接起来:

$ cat file1
/dev/sdb
/dev/sdc
/dev/sdd

$ cat file2
104
113
210

$ paste file1 file2
/dev/sdb        104
/dev/sdc        113
/dev/sdd        210

您不需要调用MegaCli两次:

MegaCli -LdpdInfo -a0 | awk <<'EOF'
  /Target Id:/ {printf("%s: ", $3)}
  /Device Id:/ {print $3}
EOF

MegaCli-LdpdInfo-a0 | awk如果您显示MegaCli和lsscsi命令的输出并解释您试图实现的目标,而不是告诉我们什么不起作用,您可能会发现您会得到更好的答案…@Mark我试图实现的是让输出在同一行上,如:/dev/sdb 104/dev/sdc 113等,等。这将匹配什么挂载是什么设备ID。没有做大量的研究和手动工作。随后,此信息可用于使用hdparm、DD和Smartctl(需要DeciveID和Mount才能工作)、小时数和擦除测试SAS驱动器。这是一个小项目,将导致一个更大的项目。原始提问者场景的一行是
粘贴这似乎可行,并感谢您,感谢其他人和Artemb谢谢,这将使事情变得像这个脚本一样简单,因为以后会变得更复杂。我发现它工作得更好一些
MegaCli-LdpdInfo-a0 | awk'/Target Id:/{printf(“%s”,$3)}/Device Id:/{print$3}