日期:2014-05-16  浏览次数:20717 次

一个Shell问题,我实在想不出来,请大家帮帮忙!
大家好,我是刚学linux的新手,我用是red hat,现在遇到一个问题,解决不了,请大家帮忙看看,小弟没齿难忘。

这个是一个txt文件,文件名:test.txt,其内容如下
Start of Data
**********************************************************************
Record (1) "EGSNPDPRecord"
   "recordType" = "00E1"
   "servedIMSI" = "455001131950438"
   "ggsniPBinV4Address" = "116193008089"
   "chargingID" = "72DF9D5B"
End of Record (1)
Record (2) "EGSNPDPRecord"
   "recordType" = "00E1"
   "servedIMSI" = "455001151010916"
   "ggsniPBinV4Address" = "116193008089"
   "chargingID" = "5B9DB29F"
End of Record (2)
**********************************************************************
End of Data

问题:使用Shell或者其他办法,将上述的文件转换成如下格式,写到一个文件,文件名另定
Result File:
00E1|455001131950438|116193008089|72DF9D5B
00E1|455001151010916|116193008089|5B9DB29F

----请各位赐教!!!小弟非常感谢你们。我已经试了一天还是没弄成答案那样。。
shell Red?Hat Linux

------解决方案--------------------
echo $1
echo $2
rm $2
#read line < $1
#while [ -n "$line" ]
while read line
do
#echo "$line"
temp=$(echo "$line" 
------解决方案--------------------
 cut -d"=" -s -f2)
#echo "temp = $temp"
echo "$line" 
------解决方案--------------------
 grep "="
if [ $? -eq 0 ]; then
if [ -z "$result" ]; then
result=$temp;
else
echo "$temp is null" 
result=$result"
------解决方案--------------------
"$temp
fi
echo "result = $result"
elif [ -n "$result" ]; then
echo "write $result to file $2"
echo $result 
------解决方案--------------------
 sed 's/[\" ]//g' >>$2
unset result
fi
#read line < $1
done < $1

这样使用:
./script.sh data.txt outputfile.txt

------解决方案--------------------
$ awk 'BEGIN{FS="\""}/= /{v[i++]=$4}END{print "Result File:";for(i=0;i<length(v);i++){if((i+1)%4)printf "%s
------解决方案--------------------
", v[i];else printf "%s\n", v[i]}}' test.txt 
Result File:
00E1
------解决方案--------------------
455001131950438
------解决方案--------------------
116193008089
------解决方案--------------------
72DF9D5B
00E1
------解决方案--------------------
455001151010916
------解决方案--------------------