Multithreading Shell脚本多线程运行

Multithreading Shell脚本多线程运行,multithreading,shell,Multithreading,Shell,我有用于拆分xml文件的shell脚本。但是客户环境中有一百万个xml文件。脚本运行缓慢。是否可以运行多线程模式 谢谢 我的shell脚本: #!/bin/sh File=/home/spark/PktLog count=0 startLine=(`sed -n -e '/?xml version="1.0" encoding/=' $File`) fileEnd=`sed -n '$=' $File` endLine=(`echo ${startLine[*]} | awk -v a=$fil

我有用于拆分xml文件的shell脚本。但是客户环境中有一百万个xml文件。脚本运行缓慢。是否可以运行多线程模式

谢谢

我的shell脚本:

#!/bin/sh
File=/home/spark/PktLog
count=0
startLine=(`sed -n -e '/?xml version="1.0" encoding/=' $File`)
fileEnd=`sed -n '$=' $File`
endLine=(`echo ${startLine[*]} | awk -v a=$fileEnd '{for(i=2;i<=NF;i++) printf("%d ",$i-1);print a}'`)

let maxIndex=${#startLine[@]}-1

for n in `seq 0 $maxIndex`

do
    sed -n "${startLine[$n]},${endLine[$n]}p" $File >result_${n}.xml
done

echo $startLine[@]`enter code here`

您的方法非常慢,因为它多次读取输入文件

您应该重写脚本,使其只读取输入文件一次,而不是尝试使用多线程加快速度

以下是一个示例输入文件:

$ cat testfile
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <some data />
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <more />
  <data />
</test>
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <more type="data" />
</test>
结果如下:

$ cat file1.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <some data />
</test>

$ cat file2.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <more />
  <data />
</test>
$ cat file1.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <some data />
</test>

$ cat file2.xml
<?xml version="1.0" encoding="UTF-8"?>
<test>
  <more />
  <data />
</test>
$ grep -c 'xml version' PktLog
3000

$ time ./yourscript    
real    0m9.791s
user    0m6.849s
sys     0m2.660s

$ time ./thisscript
real    0m0.248s
user    0m0.130s
sys     0m0.107s