每个固定字节数添加一个换行符

时间:2018-11-23 14:04:11

标签: newline ksh line-breaks

我正在使用AIX和ksh。

我有一个很大的文件,没有换行符。我确定该文件是由固定记录长度的文件生成的。

例如,如果文件大小为123456789000,则该文件应包含123456789条记录,每1000个字节。

由于缺少换行符,即LF,因此很难处理此文件。

我使用bs = 1000尝试了dd命令。但是,似乎无法在每个块后添加\ n。

使用split命令可以将文件分为123456789个文件,每个文件大小为1000字节。然后继续下去是很麻烦的。

有什么方法可以每1000个字节添加一个\ n吗?

如果我可以每1000字节加回\ n,则对我来说文件处理将更加容易。

顺便说一句,更喜欢使用ksh脚本,没有python,没有perl。没有C编译器。

谢谢。

3 个答案:

答案 0 :(得分:0)

那是一条很大的线。您可以尝试以下方法:

while IFS= read -rn 1000 chars || [[ -n $chars ]]; do 
    printf "%s\n" "$chars"
done < file.in > file.out

如果您遇到错误,我也不会感到惊讶。

答案 1 :(得分:0)

不太优雅,但可以在AIX上使用:

#!/bin/sh

while dd bs=1000 count=1 2>ddstat.tmp; head -n1 ddstat.tmp |\
      grep -v -q '^0+0 records in'; do
    printf '\n'
done <split.in >split.out

编辑:没有临时“ ddstat.tmp”文件的版本:

#!/bin/sh

exec 4>split.out

while dd bs=1000 count=1 2>&1 >&4 | head -n1 |\
      grep -v -q '^0+0 records in'; do
    printf '\n' >&4
done <split.in

答案 2 :(得分:0)

您可以使用

fold -w 1000 inputfile > outputfile