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

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

说明:

breakline=10表示如果一个文件中超过10行的格式不对,则不再计算
试了下,CloverETL这款工具中支持的通配符非常有限,所以类似Hengda_Payment_*_*_*_*这样看起来很怪的匹配方式
check_delimitor(){
delimitor="|"
breakline=
path="${DATATMP_DIR}/bash_res.txt"
i=
while read line
do
num=$(echo $line|grep -o $delimitor|wc -l)
if [ $num != $ ];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}/$
} for file in `ls ${DATATMP_DIR}`
do
case $file in
Hengda_Member_*)
check_delimitor $file
;;
Hengda_Ticket_*)
check_delimitor $file
;;
Hengda_Payment_*_*_*_*)
check_delimitor $file
;;
Hengda_Payment_*)
check_delimitor $file
;;
Hengda_Transaction_Non_Tickets_*)
check_delimitor $file
;;
Hengda_Transaction_*)
check_delimitor $file
;;
Hengda_Item_Non_Tickets_*)
check_delimitor $file
;;
Hengda_Cinema_*)
check_delimitor $file
;;
Hengda_Film_*_*)
check_delimitor $file
;;
Hengda_Film_*)
check_delimitor $file
;;
Hengda_Refer_*)
check_delimitor $file
;;
*) echo "FILE NAME WRONG" ;;
esac
done

bash检查文件格式的更多相关文章

  1. js 检查文件格式和文件大小

    之前有个工作需要用到js检查文件大小和文件格式,网上查了下有个兄弟写的不错,拿过来就能直接用,感谢他顺便记录下.原始文章地址http://www.jb51.net/article/43498.htm ...

  2. check if a linux process is done using bash 检查进程是否在运行

    # cat > check_process_is_end.sh while truedo   sleep 30 # seconds   res=`ps -ef | grep RNAhybrid` ...

  3. Bash 翻译

    Bash参考手册 目录 1简介 1.1什么是Bash? 1.2什么是shell? 2定义 3基本外壳功能 3.1 Shell语法 3.1.1外壳操作 3.1.2报价 3.1.2.1逃逸角色 3.1.2 ...

  4. linux命令帮助 man bash

    BASH(1) BASH(1) NAME bash - GNU Bourne-Again SHell (GNU 命令解释程序 “Bourne二世”) 概述(SYNOPSIS) bash [option ...

  5. 使用Git Bash for Windows

    本篇体验Git Bash在Windows操作系统上的用法. 什么是Bash? 是一个Shell环境,Bourne Again Shell的缩写. 安装git for windows → http:// ...

  6. (转)linux bash shell 入门教程

    Shell Script(bash)简介 众所皆知地,UNIX上以小工具著名,利用许多简单的小工具,来完成原本需要大量软体开发的工作,这一点特色,使得UNIX成为许多人心目中理想的系统平台. 在众多的 ...

  7. Bash Shell启动配置脚本的顺序

    1.Bash检查环境变量文件的方式,取决于系统运行Shell的方式,通常系统运行Shell有3种方式: )通过系统用户登陆后默认运行的Shell )非登陆交互式运行Shell )执行脚本运行非交互式S ...

  8. shell脚本,检查给出的字符串是否为回文

    [root@localhost wyb]# .sh #!/bin/bash #检查给出的字符串是否为回文 read -p "Please input a String:" numb ...

  9. shell 检查文件夹所属用户组

    shell 检查文件夹所属用户组 #!/bin/bash # 检查文件夹 权限是否777 检查文件夹所属组是否www # authro ranmufei # 2017 08 21 云板容器版 /dat ...

随机推荐

  1. SVG 2D入门11 - 动画

    交互性      SVG拥有良好的用户交互性,例如:1. SVG能响应大部分的DOM2事件.2. SVG能通过cursor良好的捕捉用户鼠标的移动.3. 用户可以很方便的通过设置svg元素的zoomA ...

  2. M2: XAML Controls(2)

    在前小节中,我们在Card程序的主界面中加入了简单的XAML控件, 本小节将在其基础上进行优化,使界面看上去更加美观.本小节用到了Grid Control, Border Control,以及XAML ...

  3. B - 搬寝室

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  4. Canvas旋转元素

    Canvas是HTML5的画布元素,有时需要按指定角度旋转某一个元素. var canvas = document.getElementById("mycanvas"); var ...

  5. C# Excel导入

    两张表导入到一个DataGrid里面(题目表和答案表) 前台代码 <asp:Content ID="Content1" ContentPlaceHolderID=" ...

  6. CE选择目录对话框(转)

    本文转载于http://blog.163.com/zhaojun_xf/blog/static/30050580201132221118479/ 在Wince下要打开目录对话框需要调用函数SHBrow ...

  7. 转 https://www.zhihu.com/question/27606493/answer/37447829

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:梁川链接:https://www.zhihu.com/question/27606493/answer/37447829来源: ...

  8. Morphia 学习一 注解

    http://blog.csdn.net/liumm0000/article/details/7535858 生命周期方法注解(delete没有生命周期事件)@PrePersist save之前被调用 ...

  9. TOMCAT如何建立两个端口或服务

    近日,一个客户需要将系统放到公网上,局网测试的时候用的8080,但该端口已经被其它应用占用,但又不想更改之前的端口,于是查了下资料,以供后阅 针对客户的这个情况,只是说想增加一个端口,这时只需要去to ...

  10. CentOS7 桌面的安装

    对于linux桌面的安装,我们还是要先安装yum 1:查询桌面组件是否安装成功 yum grouplist #查询桌面组件 #由于我这里安装了,所以桌面菜单显示在已安装 2:选取我们要安装的组件 yu ...