- 论坛徽章:
- 0
|
在nuclearxin 给出的脚本添加了一下下,能跑出正确结果了,但是比原文件少了一次6行循环,也就是比最终少了一行,原文件是得出的正确结果应该是15981行(长单+普通单 数量的和)的,但是脚本跑出来的结果是15980
# awk ' (/销帐结果/){print $0}' realbill_ora_st_002_20081204_00080.log|wc -l
17751
# awk ' (/长单/){print $0}' realbill_ora_st_002_20081204_00080.log|wc -l
508
# awk '(/普通单/){print $0}' realbill_ora_st_002_20081204_00080.log|wc -l
15473
## awk '(/短单/){print $0}' realbill_ora_st_002_20081204_00080.log|wc -l
1770
20081204 23:23:09 13553353270 368 2005~2004 0 0 0 0 0 601 0 0 0 0 0 0 0 233 0 0 7544001841918
20081204 23:23:09 13433849578 88 2004 0 3387 0 0 0 0 0 0 0 3299 0 0 0 0 0 0 7544005088090
20081204 23:23:09 13417175298 15 2020 0 0 0 0 0 4854 0 0 0 0 0 0 0 4839 0 0 7544001374276
- BEGIN{
- FS="[]|[]+"
- }
- {if(/解析清单/){
- key1=$1$4$11
- getline
- while(/解析清单/){key1=$1$4$11;getline}
-
-
- if(/转换后帐单科目/){
- gsub(/.*转换后帐单科目: /,"",$0)
- gsub(/ FILE:.*/,"",$0)
- key2=$0
- getline
- key22=""
- while(/转换后帐单科目/){
- gsub(/.*转换后帐单科目: /,"",$0)
- gsub(/ FILE:.*/,"",$0)
- key22=$0
- getline}
-
- if(/普通单/ || /长单/){
- getline
- if(/Ebox Info:/){
- gsub(/~/," ",$4)
- key3=$4
- getline
- if(/After Woff Ebox Info:/){
- gsub(/~/," ",$4)
- key4=$4
- getline
- if(/销帐结果/){
- gsub(/~/," ",$4)
- key5=$4
- if (key22==""){print key1,key2,key3,key4,key5}
- else {print key1,key2"~"key22,key3,key4,key5}
- next
- }
- }
- }
- }
- }
- }
- }
复制代码
[ 本帖最后由 sthcf 于 2008-12-16 09:15 编辑 ] |
|