首页 > 解决方案 > 在命令中用“:”替换空格

问题描述

当我编写一个给我这样的输出的命令时。

[root@localhost:~] esxcli storage filesystem list 
Mount Point                                        Volume Name  UUID                                 Mounted  Type             Size          Free
-------------------------------------------------  -----------  -----------------------------------  -------  ------  -------------  ------------
/vmfs/volumes/5bc0c1e3-2ff435d4-533e-3cd92b0a6096  datastore1   5bc0c1e3-2ff435d4-533e-3cd92b0a6096     true  VMFS-6  1992327954432  589864894464
/vmfs/volumes/50696371-d628af73-35da-9c895c95504a               50696371-d628af73-35da-9c895c95504a     true  vfat        261853184      69218304
/vmfs/volumes/8a820f75-48ed9387-b688-b249a3a1691f               8a820f75-48ed9387-b688-b249a3a1691f     true  vfat        261853184     261844992
/vmfs/volumes/5bc0c1e4-863d9324-d91f-3cd92b0a6096               5bc0c1e4-863d9324-d91f-3cd92b0a6096     true  vfat       4293591040    4260233216
/vmfs/volumes/5bc0c1dd-09ac4bba-56c7-3cd92b0a6096               5bc0c1dd-09ac4bba-56c7-3cd92b0a6096     true  vfat        299712512      80486400

现在我想要所有以“/”开头并用“:”替换空格的行

所以我尝试了一个esxcli storage filesystem list | sed -e 's/\s\+/:/g' |awk '$1 ~ /^\/[a-z]+/ {print $1$2$3$4$5}命令esxcli storage filesystem list |awk '$1 ~ /^\/[a-z]+/ {i=":";print $1i$2i$3i$4i$5i}'

这给了我这样的输出:

[root@localhost:~] esxcli storage filesystem list | sed -e 's/\s\+/:/g' |awk '$1 ~ /^\/[a-z]+/ {print $1$2$3$4$5}'
/vmfs/volumes/5bc0c1e3-2ff435d4-533e-3cd92b0a6096:datastore1:5bc0c1e3-2ff435d4-533e-3cd92b0a6096:true:VMFS-6:1992327954432:590073561088
/vmfs/volumes/50696371-d628af73-35da-9c895c95504a:50696371-d628af73-35da-9c895c95504a:true:vfat:261853184:69218304
/vmfs/volumes/8a820f75-48ed9387-b688-b249a3a1691f:8a820f75-48ed9387-b688-b249a3a1691f:true:vfat:261853184:261844992
/vmfs/volumes/5bc0c1e4-863d9324-d91f-3cd92b0a6096:5bc0c1e4-863d9324-d91f-3cd92b0a6096:true:vfat:4293591040:4260954112
/vmfs/volumes/5bc0c1dd-09ac4bba-56c7-3cd92b0a6096:5bc0c1dd-09ac4bba-56c7-3cd92b0a6096:true:vfat:299712512:80486400

但问题是如果找不到卷名,那么它应该是“::”之类的东西。

我想要像这样的输出:

/vmfs/volumes/5bc0c1e3-2ff435d4-533e-3cd92b0a6096:datastore1:5bc0c1e3-2ff435d4-533e-3cd92b0a6096:true:VMFS-6:1992327954432:590073561088
/vmfs/volumes/50696371-d628af73-35da-9c895c95504a::50696371-d628af73-35da-9c895c95504a:true:vfat:261853184:69218304
/vmfs/volumes/8a820f75-48ed9387-b688-b249a3a1691f::8a820f75-48ed9387-b688-b249a3a1691f:true:vfat:261853184:261844992
/vmfs/volumes/5bc0c1e4-863d9324-d91f-3cd92b0a6096::5bc0c1e4-863d9324-d91f-3cd92b0a6096:true:vfat:4293591040:4260954112
/vmfs/volumes/5bc0c1dd-09ac4bba-56c7-3cd92b0a6096::5bc0c1dd-09ac4bba-56c7-3cd92b0a6096:true:vfat:299712512:80486400

标签: linuxtext-processing

解决方案


推荐阅读