![使用 bash 脚本对文件中的文本进行排序](https://linux22.com/image/60311/%E4%BD%BF%E7%94%A8%20bash%20%E8%84%9A%E6%9C%AC%E5%AF%B9%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%96%87%E6%9C%AC%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%BA%8F.png)
我想使用 bash 脚本将 multipath -ll 的输出排序为 csv 类型的文件。例如 # multipath -ll 将给出以下输出
360060e80056fc30000006fc30000513c dm-41 HITACHI,OPEN-V
\_ 4:0:0:45 sdcm 69:160 [active][ready]
\_ 3:0:0:45 sdcn 69:176 [active][ready]
360060e80056fc30000006fc300005162 dm-31 HITACHI,OPEN-V
\_ 3:0:0:36 sdbu 68:128 [active][ready]
\_ 4:0:0:36 sdbv 68:144 [active][ready]
360060e80056fc30000006fc300005127 dm-56 HITACHI,OPEN-V
\_ 3:0:0:6 sdg 8:96 [active][ready]
\_ 4:0:0:6 sdt 65:48 [active][ready]
我想要的是创建一个采用这种格式的 csv 文件
LUN ID no., SCSI DEVICE1, SCSI DeVICE2
360060e80056fc30000006fc300005127,sdg,sdt
360060e80056fc30000006fc300005162,sdbu,sdbv
我只是在寻找如何完成它的基本想法,而不是整个脚本。任何帮助将不胜感激。
答案1
> awk '/^[^ ]/ {printf "\n%s",$1; next}; { printf ",%s",$3; }' file
360060e80056fc30000006fc30000513c,sdcm,sdcn
360060e80056fc30000006fc300005162,sdbu,sdbv
360060e80056fc30000006fc300005127,sdg,sdt