首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将列拆分为2+行;指定分隔符&最大字符长度

将列拆分为2+行;指定分隔符&最大字符长度
EN

Stack Overflow用户
提问于 2018-11-30 17:58:11
回答 1查看 68关注 0票数 0

我有一个由10列和30,000+行组成的数据文件。我需要对这个数据文件进行预处理以供下游使用(最后的文件格式必须是Excel;不幸的是,将其保持为纯文本文档不是一种选择)。

我遇到的问题是,第7列中的几行超出了Excel的字符限制(32,767)。如何指定将第7列拆分,使其不超过字符限制,但同时也将文本的上下文保存在列中?(第7栏包含了一堆句子,我不想把它们分开)。

例如/简单性:下一段载于"A“栏。我想将这一段分解为"X“行数,如所示,这样A列中的每一行在保持句子结构的同时不超过100个字符。

  • 分隔符:".“{句号后面跟着空格}
  • 最大字符长度: 100

他给我们讲了一个非常激动人心的冒险故事。我们从未去过亚洲,也没有访问过非洲。我们应该现在开始上课,还是应该等每个人到这里来。大家都很忙,所以我一个人去看电影。上个星期五,在三周的时间里,我看到一条条纹的蓝色蠕虫和一只没有腿的蜥蜴握手。

以下是我尝试过的:

  • sed/gsub:但这将替换分隔符的每个实例
  • 折叠:但我不知道如何指定除空格之外的分隔符,并且使用空格作为包装会干扰句子。
  • substr:我认为这可能是一条路,但现在,它只是(1)输出第一个“行”,(2)以最大字符长度而不是在我想要的分隔符处拆分段落。

“-F”。‘'BEGIN {OFS=“\n’};{ $0=substr($0,1,100);打印}‘

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-30 22:22:40

当您对拆分A列感兴趣时,可以使用sed

你试着用最大的99匹配尽可能多的字符,然后是一个点和一个空格。

用换行符替换最后一个空格。

代码语言:javascript
代码运行次数:0
运行
复制
columnA="He told us a very exciting adventure story. We have never been to Asia, nor have we visited Africa. Should we start class now, or should we wait for everyone to get here. Everyone was busy, so I went to the movie alone. Last Friday in three week’s time I saw a striped blue worm shake hands with a legless lizard."
echo "${columnA}" | sed -r 's/(.{1,99}\.) /\1\n/g'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53562583

复制
相关文章

相似问题

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