我有一个文本文件,需要添加$ 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] 删除。
我来说两句