【问题标题】:Split text into equal parts将文本分成相等的部分
【发布时间】:2015-12-11 15:51:53
【问题描述】:

我在文件的一个字段中有一个短语,我需要将其分解为 30 个字符的部分(包括字母、数字和空格)。

例如:“

This text is to show an example of what im looking for, to break the text into parts containing maximum 30 characters."

我需要以下结果:

This text is to show an exampl|e of what im looking for, to b|reak the text into parts conta|ining maximum 30 characters.

谁能给我指个方向?

【问题讨论】:

  • 不太确定您要的是什么。您是否想要像您的示例中那样用竖线 (|) 字符分隔的单行 30 个字符的片段?这可能是sed 和/或awk 的工作。
  • sed 's/.\{30\}/&|/g' file ?
  • 是的 Lotharyx,需要一行 30 个字符的片段,由竖线 (|) 字符分隔,如我的示例所示。 sed 或 awk 都可以。将尝试您的此代码并返回。谢谢
  • 这个 sed 命令完美运行!你想用那个代码发布答案,这样我就可以解决了吗?

标签: bash file split


【解决方案1】:

这是fold的工作

$ fold -w30 longline | tr '\n' '|' | sed 's/|$/\n/'

此文本是为了展示我正在寻找的内容的示例,将文本分成|最多包含 30 个字符的部分。

sed是删除最后一个“|”,注意不是所有seds都支持'\n'替换。如果你发烧超过 20 段,你可以这样做

$ fold -w30 longline | pr -20ts'|'

还可以使用-s 选项在空格处设置断点,可能更适合人类消费

$ fold -w30 -s longline

This text is to show an
example of what im looking
for, to break the text into
parts containing maximum 30
characters.

对比

$ fold -w30 longline

This text is to show an exampl
e of what im looking for, to b
reak the text into parts conta
ining maximum 30 characters.

【讨论】:

  • fold 没有得到足够好的新闻。这是为工作选择正确工具的一个很好的例子。相比之下,c 样式的循环递增 30 与字符串索引相结合的 bash 替代方案是圆钉在方孔中的解决方案(并且几乎没有那么灵活)
猜你喜欢
  • 1970-01-01
  • 2011-07-19
  • 2015-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-04
  • 2011-02-15
相关资源
最近更新 更多