我正在使用AIX和ksh。
我有一个很大的文件,没有换行符。我确定该文件是由固定记录长度的文件生成的。
例如,如果文件大小为123456789000,则该文件应包含123456789条记录,每1000个字节。
由于缺少换行符,即LF,因此很难处理此文件。
我使用bs = 1000尝试了dd命令。但是,似乎无法在每个块后添加\ n。
使用split命令可以将文件分为123456789个文件,每个文件大小为1000字节。然后继续下去是很麻烦的。
有什么方法可以每1000个字节添加一个\ n吗?
如果我可以每1000字节加回\ n,则对我来说文件处理将更加容易。
顺便说一句,更喜欢使用ksh脚本,没有python,没有perl。没有C编译器。
谢谢。
答案 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