每固定字节数添加一个换行符
Add a line break every fix number of byte
我正在使用 AIX 和 ksh。
我有一个没有换行符的非常大的文件。我确定该文件是从固定记录长度文件生成的。
例如,如果文件大小为123456789000,则文件应包含123456789条记录,每条1000字节。
因为缺少换行字符,即LF,所以很难处理这个文件。
我试过使用 bs=1000 的 dd 命令。但是,似乎不能在每个块之后添加 \n。
使用split命令可以将文件拆分成123456789个文件,每个1000字节大小。那就麻烦继续了。
有没有办法每1000字节加一个\n?
如果我能每1000字节加回\n,我会更容易处理文件。
顺便说一句,更喜欢使用 ksh 脚本,没有 python,没有 perl。没有 C 编译器。
提前致谢。
那是一条大线。你可以试试这个:
while IFS= read -rn 1000 chars || [[ -n $chars ]]; do
printf "%s\n" "$chars"
done < file.in > file.out
如果您遇到错误,我不会感到惊讶。
不太优雅,但适用于 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
您可以使用
fold -w 1000 inputfile > outputfile
我正在使用 AIX 和 ksh。
我有一个没有换行符的非常大的文件。我确定该文件是从固定记录长度文件生成的。
例如,如果文件大小为123456789000,则文件应包含123456789条记录,每条1000字节。
因为缺少换行字符,即LF,所以很难处理这个文件。
我试过使用 bs=1000 的 dd 命令。但是,似乎不能在每个块之后添加 \n。
使用split命令可以将文件拆分成123456789个文件,每个1000字节大小。那就麻烦继续了。
有没有办法每1000字节加一个\n?
如果我能每1000字节加回\n,我会更容易处理文件。
顺便说一句,更喜欢使用 ksh 脚本,没有 python,没有 perl。没有 C 编译器。
提前致谢。
那是一条大线。你可以试试这个:
while IFS= read -rn 1000 chars || [[ -n $chars ]]; do
printf "%s\n" "$chars"
done < file.in > file.out
如果您遇到错误,我不会感到惊讶。
不太优雅,但适用于 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
您可以使用
fold -w 1000 inputfile > outputfile