bash检查文件格式
2024-10-17 06:16:32
情形描述:最近在做一个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
最新文章
- 报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
- Java 内存管理
- WIn2003的IIS6解决IE11登录问题。
- POJ 3693 后缀数组
- 设计模式 命令-Command
- vs2010打开vs2012的sln文件
- Java中的数据类型及相互转换方法
- xp每天定时关机命令
- mysql各版本区别
- UVa 324 - Factorial Frequencies
- 201521123065《Java程序设计》第1周学习总结
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
- php程序员的成长之路
- Solution for link error:Cannot Open File &#39;python27_d.lib&#39;
- springboot项目利用devtools实现热部署,改动代码自动生效
- Delphi IfThen语句
- ansible笔记(3):ansible模块的基本使用
- Java并发--Java线程面试题 Top 50
- gitbub感想
- 前端forEach在Array、map、set中的使用,weakset,weakmap