【发布时间】:2020-02-21 22:10:34
【问题描述】:
我正在尝试使用 sed 每 2000 个字符向文件中插入一个模式。我正在使用这个 sed 命令,但如果文件中有多行,它就不起作用,因为计数会在每一个新行上重置。
模式:'
|| '
sed "s/.\{2000\}/&'\n || '/g" file
如何使此命令与可能有也可能没有新行的输入一起工作?我可以接受非 sed 解决方案。
这里是每 4 个字符而不是 2000 个字符插入模式的示例。
示例输入:
aaaaaa
bbbbbb
示例输出:
aaaa'
|| 'aa
b'
|| 'bbbb'
|| 'b
- 计算 4 个字符(4 个 a),插入模式。
- 计算 4 个字符(2 个 a、换行符和 1 个 b),插入模式。
- 计算 4 个字符(4 个 b),插入模式。
- 仅剩 1 个字符 (1 b)
谢谢。
【问题讨论】:
-
请在您的问题中添加示例输入(无描述、无图像、无链接)以及该示例输入所需的输出(无评论)。
-
使用 GNU sed,您可以使用
sed -z "s/.\{2000\}/&'\n || '/g" file。但是,换行符将被视为一个单独的字符。 -
添加了示例输入。 @WiktorStribiżew 解决方案完美运行,但遗憾的是我的 gnu sed 版本是 4.2.1,在 4.2.2 中添加了对 -z 的支持。
-
更新了我的解决方案。 PS你确实错过了输出中的
b(应该是6个b)为什么你得到aa\nb'\n没有4个字母? -
你能解释一下新行应该发生什么吗?计数应该从 0 开始,还是从上一行的剩余数字开始?