【问题标题】:Inserting particular string into text (bash sed)将特定字符串插入文本(bash sed)
【发布时间】:2020-08-07 10:54:30
【问题描述】:

您好,我正在寻找一种使用 sed 命令将 , 插入文本的方法。 我找到了一种方法,只需执行一次或每 5 个字符执行一次。

但是我有一个文本(例如这里包含 10 个字符),我想在前 2 个字符之后放置 3 个字符。并且一直持续到正文结束。

所以我的文字会是这样的

abcdefghij

我正在寻找的输出会是这样的

ab,cde,fg,hij,

有没有办法通过 sed 进行这种插入?

【问题讨论】:

  • 如果长度不是 5 的倍数怎么办?结局应该是怎样的?
  • 对不起,我应该说长度无论如何都是 5 的倍数。

标签: linux bash sed


【解决方案1】:

对于长度为 5 的倍数的字符串:

echo abcdefghij | sed 's/\(..\)\(...\)/\1,\2,/g'

【讨论】:

  • 它对我不起作用.. 我也有类似的 echo 'abcdefghij' | sed -e 's/'^(.\{2\})(.\{3\})/\1,\2,/g' 但最终像 ab,cde,fghij
  • Shawn 的命令对我有用。 @gggert 我建议您复制并粘贴它完全,然后重试。如果它仍然不起作用,请准确记录发生的情况,包括任何输出的完整未更改文本和任何错误消息的完整未更改文本。
  • @gggert 您的 RE 根本不匹配该字符串,因为它没有括号。另外,由于您将其锚定到行首,即使匹配,也只会匹配一次。
  • @Shawn 谢谢你的澄清。我实际上是直接在 CLI 中执行了命令。在我把它放到一个 .sh 文件中执行它之后它就起作用了。
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 2012-08-27
相关资源
最近更新 更多