使用bash,我如何在文本文件中每隔这么多字符添加特定文本?

刷子

我有一个文本文件,需要添加$ LINE,然后分页。因此,例如,在一个文本文件中

这是我坐在这里的一个随机文本文件,为此示例我正在写以填充空间。本文的内容无关紧要,仅用于说明我要问的问题的含义。再一次,我只是在写以填补空白。

我想把它变成

$ LINE这是我坐在这里的一个随机文本文件,为此示例我正在写以填充空间。

$ LINE这段文字的内容无关紧要

$ LINE仅用于演示我要问的问题的含义。

$ LINE再一次,我只是在写以填补空白。

假设每个$ LINE后面紧跟着175个文本字符,然后分解为下一个$ LINE,以我所描述的方式分割整个文本文件的最佳方法是什么?

查尔斯·达菲

如果不需要正确处理带有NUL字符的文件,则可以使用read将每个段收集到一个缓冲区中,然后printf发出该缓冲区和要添加的字符:

size=175                  # number of bytes per section; tune to fit
interspaced_char=$'\n\n'  # character(s) to intersperse; likewise

while REPLY=; IFS= read -r -d '' -n "$size" || [[ $REPLY ]]; do
  printf '%s' "$REPLY"
  (( ${#REPLY} == $size )) && printf '%s' "$interspaced_char"
done <input >output

read返回非零退出状态时允许循环继续进行,$REPLY执行完后为非空循环,则允许在输入文件末尾进行部分读取。

如果确实需要处理NUL字符,最好的选择是使用带有Pascal样式的字符串(例如Python)的编程语言,而不要使用以NUL终止的字符串(如bash所用)。可以在bash中使用数组表示包含NUL的字符串(通过使用数组),但这增加了非常不平凡的复杂性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

每隔这么多字符

如何使用sed在文本文件中的特定字符后添加空白行?

如何将文本文件添加到 bash 脚本中,然后使用该文本文件

如何在我的项目中添加文本文件,然后在代码中读取文本行?

如何在 Oracle 中添加字符串并使用该字符串名称创建文本文件

如何在Linux中的目录中的所有文本文件中添加特定的列?

如何从文本文件中删除特定范围的字符?

如何在文本文件中添加/删除行?

如何在文本文件中搜索特定整数

如何在我的终端中编辑文本文件

如何在bash中结构良好的固定宽度文本文件的列之间添加空格?

我如何让python3在文本文件中搜索特定的字符串

使用StringBuilder和BufferedReader,如何在文本文件中的每个单词之后添加逗号并生成字符串?

如何在文本文件中搜索字符串并根据结果执行特定操作

如何在文本文件中的特定位置插入字符

如何在文本文件中特定的地方附加字符串

如何在现有文本文件中的特定位置插入新的文本字符串

我如何在多个文本文件中搜索模式并写入新的多个文本文件

我如何从文本文件中输入文本 (c)

如何在现有文本文件中的python中的一行中添加字符?

如何在文本文件中的许多列表中的列表中的字符串之间添加空格?

如何在使用for循环读取文本时向文本文件添加虚拟多余的行

如何在文本文件中查找特定文本,并在excel VBA中的以下行中添加附加文本

如何在文本文件中的特定行号处插入文本?

如何在Linux中创建带有特定文本的文本文件?

如何在php中遍历文本文件以查找特定的文本行

如何从文本文件中提取特定的字符串并将其添加到列表中?

c#如何防止将一个特定字符添加到文本文件中

如何在文本文件中每隔两行插入一个新行?