我正在创建Cisco fabric配置的Excel电子表格,并希望将格式正确地输入到字段/列中以供导入。
这是格式,当然还有修改后的信息:
zone name Zone1_HOSTNAME01 vsan XXX
fcalias name STORAGEPORT_0 vsan XXX
pwwn xx:xx:xx:xx:xx
fcalias name STORAGEPORT_1 vsan XXX
pwwn xx:xx:xx:xx:xx
fcalias name STORAGEPORT_2 vsan XXX
pwwn xx:xx:xx:xx:xx
zone name Zone2_HOSTNAME02 vsan XXX
fcalias name STORAGEPORT_3 vsan XXX
pwwn xx:xx:xx:xx:xx
fcalias name STORAGEPORT_4 vsan XXX
pwwn xx:xx:xx:xx:xx
fcalias name HOSTNAME02 vsan XXX
pwwn xx:xx:xx:xx:xx所以我想要做的是让区域名称区域名中的所有内容都位于1字段中的“vsan”空间中,然后直到下一次出现"zone name“行开始时,将每个字符串放入它自己的字段中,然后使用分隔符”剪切“以得到我想要的内容。所以从本质上讲,我最终想要的是:
"zone name Zone1_HOSTNAME01" "vsan" "XXX" "fcalias name" "STORAGEPORT_0 vsan XXX" "pwwn xx:xx:xx:xx:xx" "fcalias name" "STORAGEPORT_1 vsan XXX" "pwwn xx:xx:xx:xx:xx" "fcalias name" "STORAGEPORT_2 vsan XXX" "pwwn xx:xx:xx:xx:xx"或者类似的东西。每个空白都可以在它自己的字段中,因为之后我可以更容易地操作列。
文本文件有超过800行,有些可能更大,但现在还不清楚。最大的问题是,以“区域名称.”开头的起始行后面的文本。可以是可变的,所以我只需要将它们转换成它们自己的字段,而不管接下来会发生什么。
发布于 2016-07-01 19:51:56
从长远来看,在Excel中完成整个工作可能更容易。我将您的示例剪切并粘贴到文本文件中,并将其打开Excel,得到以下内容:

在那里,您可以使用全局搜索和替换命令来进行您可能需要的任何修改。
发布于 2016-07-18 10:55:25
显然,某些字段可以省略,因为在导入已排序的数据后,这些字段将在我将在excel中创建的字符串中得到考虑。我肯定有更好的选项,但这占用了我所有的输出,将所有的值排列在一个新的行上,然后去掉vsan\ pwwn的“区域名称”的非必需字段,而只留下了区域和成员别名以及pwwn条目。因为所有的区域都以大写Z开头,这也使它更简单。
我在一个队列中使用的代码是:
grep -oP '\S+' switch01-zones-20160711 | grep -Ev 'name|vsan|^01|^02|fcalias|pwwn|zone' | awk '{printf "%s%s", (/^Zone/?rs:FS), $0; rs=RS} END{print ""}' >to-import.csv这给我留下了一个不错的单行,为每个区域和成员别名与连接的www设备,并导入到Excel字符串建设和所有的时间。
https://unix.stackexchange.com/questions/293335
复制相似问题