Я использовал скрипт sed
, чтобы разделить файл на множество XML-файлов по ключевому слову:
сценарий:
#!/bin/sh
File=/home/spark/PktLog
count=0
line=(`sed -n '/?xml version="1.0" encoding/=' $File`)
num=${#line[@]}
for n in ${line[*]}
do
[ $count -eq 0 ] && startLine=$n && continue
let count+=1
let endLine=n-1
if [ $count -eq $num ]; then
startLine=$n
sed -n "${startLine},$ p" $File >result_${count}.txt
else
sed -n "${startLine},${endLine} p;q" $File >result_${count}.txt
startLine=$n
fi
done
но не разбивать много файлов. Я отлаживаю скрипт оболочки
spark@ubuntu:~$ sh -x split.sh
+ File=/home/spark/PktLog
+ count=0
+ line=(`sed -n '/?xml version="1.0" encoding/=' $File`)
++ sed -n '/?xml version="1.0" encoding/=' /home/spark/PktLog
+ num=333
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=1
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=137
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=244
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=415
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=522
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=674
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=780
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=932
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
+ startLine=1038
+ continue
+ for n in '${line[*]}'
+ '[' 0 -eq 0 ']'
Как исправить ошибку? Спасибо!