zoukankan      html  css  js  c++  java
  • bash检查文件格式

    情形描述:最近在做一个ETL的项目,用的是CLoverETL,需要在拿到文件后对文件格式进行检验,以决定是否继续。

    主要功能是检查每个文件中有几个“|”符号,项目中约定以该符号来作为分隔,所以检查每个文件每行的“|”的个数。没有问题才可以插入到数据库中。

    说明:

    breakline=10表示如果一个文件中超过10行的格式不对,则不再计算
    试了下,CloverETL这款工具中支持的通配符非常有限,所以类似
    Hengda_Payment_*_*_*_*这样看起来很怪的匹配方式
    check_delimitor(){
        delimitor="|"
        breakline=10
        path="${DATATMP_DIR}/bash_res.txt"
        i=1
        while read line
        do
            num=$(echo $line|grep -o $delimitor|wc -l)
            if [ $num != $1 ];then 
                echo "$2|${i}|${NOW}" >> ${DATATMP_DIR}/bash_res.txt
                if [ $i -gt $breakline ]
                then
                    echo "****More than ${i} lines format wrong in $2****" >> $path
                    break 
                fi
            fi
            let i++
        done < ${DATATMP_DIR}/$2
    }
    
    for file in `ls ${DATATMP_DIR}`
    do
        case $file in
        Hengda_Member_*)
        check_delimitor 27 $file
        ;;
        Hengda_Ticket_*)
        check_delimitor 7 $file
        ;;
        Hengda_Payment_*_*_*_*)
        check_delimitor 7 $file
        ;;
        Hengda_Payment_*)
        check_delimitor 9 $file
        ;;
        Hengda_Transaction_Non_Tickets_*)
        check_delimitor 7 $file
        ;;
        Hengda_Transaction_*)
        check_delimitor 14 $file
        ;;
        Hengda_Item_Non_Tickets_*)
        check_delimitor 6 $file
        ;;
        Hengda_Cinema_*)
        check_delimitor 8 $file
        ;;
        Hengda_Film_*_*)
        check_delimitor 6 $file
        ;;
        Hengda_Film_*)
        check_delimitor 10 $file
        ;;
        Hengda_Refer_*)
        check_delimitor 6 $file
        ;;
        *) echo "FILE NAME WRONG" ;;
        esac
    done
  • 相关阅读:
    C++ 多线程编程
    协程简介(coroutine)
    Yanhua Digimaster 3如何使用免焊适配器重置仪表板?
    Autel OTOFIX IM1 远程/在线技术支持指南
    Xhorse奥迪免焊适配器套装功能列表+常见问题
    如何通过 DDD 构建一辆汽车
    周末复习一波Linux,Linux常用命令总结,还有语法+案例
    Dubbo 基础知识
    GIT版本控制学习博客
    C++检测和定位内存泄漏
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/5195237.html
Copyright © 2011-2022 走看看