bash - 如何使用可能有新行的输入每 n 个字符插入一个模式?
问题描述
我正在尝试使用 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)
谢谢。
解决方案
perl -0777pe "s/(.{2000})/\$1'\n || '/gs" file
-0777
将整个文件作为一行处理\$1
允许引用捕获组 w/o shell 使其为空,因为我必须使用双引号s///gs
用于g
重复多次,并s
确保.{4}
可以跨越换行符。
$ printf "aaaaaa\nbbbbbb\n" | perl -0777pe "s/(.{4})/\$1'\n || '/gs" 啊啊啊 || 啊啊 b' || 'bbbb' || 'b
推荐阅读
- javascript - 使用 Javascript 从远程服务器位置获取数组
- mysql - 回滚事务无法正常工作
- powershell - .PS1 仅部分从 .BAT 运行
- java - 如何区分两个自定义树?
- c++ - 是否允许对嵌套类的参数使用完全限定的类名?
- tensorflow - Keras 函数式 API 中的可重用块
- linux - 如何在bash中的某些字符之间获取2个字符串
- python - TTK Treeview 仅在插入新行时显示第一个单词
- laravel - 记住我使用 laravel vue js 的功能
- javascript - 如何打印我的单选按钮并在我的文本区域中输入文本?