(shell脚本)
给定固定长度(文档long.txt)
根据字符长(非字节长)分割文档
输出去除空格 以 ^ 拼接
#!/bin/bash
LANG=GBK
#读取保存定长的文件,保存在数组arr1
#arr1:定长 arr2:开始截取位置 arr3:结束截取位置
while read line
do
IFS=","
arr1=($line)
#num为数组长度
num=${#arr1[@]}
arr2[0]="1"
for((i=1; i<${num}; i++)) do
let arr2[$i]=arr2[$i-1]+arr1[$i-1]
let arr3[$i-1]=arr2[$i]-1
done
done < long.txt
let arr3[${num}]=arr1[${num}]+arr2[${num}]
#打印数据
#echo ${arr1[@]}
#echo ${arr2[@]}
#echo ${arr3[@]}
#读取要分割的文件
while read line
do
for((i=0; i<${num}; i++)) do
a1=${arr2[i]}
a2=${arr3[i]}
#newline=${newline}${line:a2:a1}^
#使用cut -c 按照字符截取
newline=`echo "${line}" | cut -c ${a1}-${a2}`
nline="${nline}^${newline}"
done
nline=`echo "${nline}" | sed s/[[:space:]]//g | awk '{print substr($1,2)}'`
echo "${nline}" >> aa_new.txt
done < aa_old.txt