【发布时间】:2018-12-01 06:22:40
【问题描述】:
我有一个包含 10 列和 30,000 多行的数据文件。我需要预处理这个数据文件以供下游使用(最终文件格式必须是 Excel;不幸的是,不能将其保留为纯文本文档)。
我遇到的问题是第 7 列中的几行超出了 Excel 的字符限制 (32,767)。如何指定拆分第 7 列,使其不超过字符数限制,但同时保持列中文本的上下文? (第 7 列包含一堆句子,我不想将它们分解)。
例如/简单性:以下段落在“A”列中。我想将这一段分成“X”行,如图所示,以便 A 列中的每一行在保持句子结构的同时不超过 100 个字符。
分隔符:“.” {句点后跟一个空格}
最大字符长度:100
他给我们讲了一个非常激动人心的冒险故事。我们从未去过 亚洲,我们也没有去过非洲。我们现在应该开始上课,还是应该 我们等着大家来。大家都很忙,所以我去了 一个人看电影。三周后的上周五,我看到了一条蓝色条纹 蠕虫与没有腿的蜥蜴握手。
这是我尝试过的:
- sed/gsub :但这会替换分隔符的每个实例
- fold :但我不知道如何指定除空格以外的分隔符,并且使用空格作为换行会破坏句子。
- substr :我认为这可能是要走的路,但现在,它只是(1)输出第一个“行”和(2)以最大字符长度而不是分割段落在我想要的分隔符处。
cat paragraph | awk -F ". " 'BEGIN { OFS="\n\n"}; { $0=substr($0,1,100); print}'
【问题讨论】: