linux数据库导出结果集且比对 && grep -v ---无法过滤的问题

场景:用dbeaver导出的csv中浮点数类型是默认没有双引号的,而且本人未找到添加双引号的方法,而软件导出的上场文件是每个字段都有双引号,所以在比对过程中会导致有diff会报错,虽然数据一样但是肉眼比对依然是错误的行为,那么就把非数据内容grep -v过滤掉之后比对

问题:而diff比对结果为空则没有任何显示,有不同则会输出不同内容、“1,3c1,3”、“—”,该三类内容,那么比对的需求除了不同内容以外的东西都可以过滤掉。而—则会报错以下内容:
grep: unrecognized option ‘—’
Usage: grep [OPTION]… PATTERN [FILE]…
Try `grep --help’ for more information.

解决方法: **grep -- "---" your_file**

shell脚本:
tips: 其实awk也可以直接修改源文件,awk 'NR>1 {print $1 > "/home/test.txt" }' /home/test.txt ;但是有时候可能在路径中会存在变量,比如说源文件路径在/home/test/$date/test.txt, $date=`date “+%y%m%d”` ,那么此时写法必须改为awk ‘NR>1 {print $1 > "/home/test/’$date’/test.txt}"’ /home/test/$date/text.txt 也就是给变量那个地方加上单引号

#!/bin/bash

#!/bin/bash

#当前时间
time2=`date "+%Y%m%d"`

if [ ! -f '/home/data_comparison/$time2' ];then
   mkdir -p /home/data_comparison/$time2
fi

cd /home/data_comparison/$time2
touch result
cp -r /home/importFiles/$time2/1.ZJXX.CSV  /home/data_comparison/$time2/
cp -r /home/importFiles/$time2/2.CCXX.CSV  /home/data_comparison/$time2/


#导出资金查询和持仓查询结果集
mysql -uroot -p'' -e "select cust_id,init_amt from basedb.t_fund_assets order by cust_id" > /home/data_comparison/$time2/atp_zj_$time2.csv

mysql -uroot -p'' -e "SELECT b.cust_id, a.account_id, a.security_id, REPLACE(a.current_available,'.00','') FROM basedb.t_stocks a LEFT JOIN basedb.t_accounts b ON a.account_id = b.account_id ORDER BY b.cust_id, b.account_id, a.security_id" > /home/data_comparison/$time2/atp_cc_$time2.csv

#上场资金文件写入到:guitai_zj_年月日.log
awk -F "," 'NR>1 {print $1,$6}' /home/data_comparison/$time2/1.ZJXX.CSV  > guitai_zj_$time2.log
#去掉双引号
sed -i 's/"//g' /home/data_comparison/$time2/guitai_zj_$time2.log 
#ATP数据库资金文件写入到:atp_zi_年月日.log
awk -F "," 'NR>1 {print $1,$2}' /home/data_comparison/$time2/atp_zj_$time2.csv > atp_zj_$time2.log
#比对两个资金文件
diff -b guitai_zj_$time2.log atp_zj_$time2.log >> /home/data_comparison/$time2/result

#上场持仓文件写入到:guitai_cc_年月日.log
awk -F "," 'NR>1 {gsub (" ","",$5); print $1,$2,$4,$5}' /home/data_comparison/$time2/2.CCXX.CSV | sort -k 1,3 > guitai_cc_$time2.log
sed -i 's/"//g' /home/data_comparison/$time2/guitai_cc_$time2.log 
#ATP数据库持仓文件写入到:atp_cc_年月日.log
awk -F "," 'NR>1 {print $1,$2,$3,$4}' /home/data_comparison/$time2/atp_cc_$time2.csv > atp_cc_$time2.log

diff -b atp_cc_$time2.log guitai_cc_$time2.log >> /home/data_comparison/$time2/result

cat /home/data_comparison/$time2/result


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sh13661847134

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值