首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本文件到字段(列),每第n次出现字符串

文本文件到字段(列),每第n次出现字符串
EN

Unix & Linux用户
提问于 2016-07-01 16:08:06
回答 2查看 155关注 0票数 2

我正在创建Cisco fabric配置的Excel电子表格,并希望将格式正确地输入到字段/列中以供导入。

这是格式,当然还有修改后的信息:

代码语言:javascript
复制
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“行开始时,将每个字符串放入它自己的字段中,然后使用分隔符”剪切“以得到我想要的内容。所以从本质上讲,我最终想要的是:

代码语言:javascript
复制
"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行,有些可能更大,但现在还不清楚。最大的问题是,以“区域名称.”开头的起始行后面的文本。可以是可变的,所以我只需要将它们转换成它们自己的字段,而不管接下来会发生什么。

EN

回答 2

Unix & Linux用户

发布于 2016-07-01 19:51:56

从长远来看,在Excel中完成整个工作可能更容易。我将您的示例剪切并粘贴到文本文件中,并将其打开Excel,得到以下内容:

在那里,您可以使用全局搜索和替换命令来进行您可能需要的任何修改。

票数 0
EN

Unix & Linux用户

发布于 2016-07-18 10:55:25

显然,某些字段可以省略,因为在导入已排序的数据后,这些字段将在我将在excel中创建的字符串中得到考虑。我肯定有更好的选项,但这占用了我所有的输出,将所有的值排列在一个新的行上,然后去掉vsan\ pwwn的“区域名称”的非必需字段,而只留下了区域和成员别名以及pwwn条目。因为所有的区域都以大写Z开头,这也使它更简单。

我在一个队列中使用的代码是:

代码语言:javascript
复制
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字符串建设和所有的时间。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/293335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档