文件夹结构,对于每一个文件内容如下所示:
/releases/customer1/filesNeeded/file1.xml
sdshsjsd -parameter1 value1 jksdj -parameter2 value2 jdskjdks
sdshsjsd -parameter20 value20 jksdj -parameter21 value21 jdskjdks
sdshsjsd -parameter22 value22 jksdj -parameter23 value23 jdskjdks
sdshsjsd -parameter24 value24 jksdj -parameter25 value25 jdskjdks
/释放/ customer1表/ filesNeeded /子文件夹/ file2.xml
lskdlskd -parameter6 value6 ljl
/释放/ C ustomer2/filesNeeded/file1.xml
sdkhdsh -parameter12 value12 jksdj -parameter15 value15
/releases/customer2/filesNeeded/subfolder/file2.xml
kdsjkjsd -parameter17 value17
kdsjkjsd -parameter100 value100 -parameter value
kdsjkjsd -parameter170 value170
脚本:
#!/bin/bash
i=1
while true;
do
# checking if customerN directory present #
if [ -d customer$i ]
then
# Cleanup for previously present csv file, if any #
if [ -f customer$i.csv ]
then
rm customer$i.csv
fi
echo ""
echo "Checking in customer$i folder";
if [ -d customer$i/filesNeeded ]
then
j=1
num_files=`find customer$i/filesNeeded -type f -name "*.xml" | wc -l`
echo " Number of valid files in customer$i/filesNeeded directory = $num_files"
while [ $j -le $num_files ]
do
file_name=`find customer$i/filesNeeded -type f -name "*.xml" | head -n $j | tail -n 1`
echo " Processing file : $file_name"
cat $file_name | tr -s " " | sed -r 's/-parameter[0-9]+/\n/g' | grep "^ " | cut -d " " -f 2 >> tmp_customer$i.csv
j=$[ $j + 1 ]
done
fi
else
break;
fi
cat tmp_customer$i.csv | tr '\n' ',' > customer$i.csv
rm tmp_customer$i.csv
i=$[ $i + 1 ]
done
输出文件生成:
customer1.csv
value1,value2,value20,value21,value22,value23,value24,value25,value6,
customer2.csv
value12,value15,value17,value100,value170,
希望这有助于!