[20210930]bbed读取数据块7 fffext.sh.txt

[20210930]bbed读取数据块7 fffext.sh.txt

–//一般bash shell脚本很少考虑执行效率,仅仅考虑利用它快速解决工作中遇到的问题.

–//以前写的bbed读取数据块的脚本调用bbed次数太多,尝试改进脚本,减少bbed的调用次数.

$ cat -v fffext.sh

! /bin/bash -x

argv1=file_number argv2=begin_block argvs3=end_block argv4=data_object_id argv5=bbed /x format

set -x

file_number=$1
begin_block=$2
end_block=$3
data_object_id=$4
ff=”/r”${5}

create sed script.

a=$5
len=$( echo ${#a} )
seq $len | xargs -IQ expr substr $a Q 1 | grep -n ‘[nt]’ | sed ‘s+:.$+s/ $//+’ >| ff.sed
echo ‘s+^*NULL*$++g’ >> ff.sed

scan begin_block to end_block,define search scope.

/bin/rm scan1.txt 2>/dev/null
seq -f “%-1.0f” $begin_block $end_block | xargs -IQ echo -e “host echo $file_number,Q \np /d dba $file_number,Q ktbbh.ktbbhsid.ktbbhod1” | \
rlbbed | grep “^BBED” | egrep “$file_number,|ub4 ktbbhod1″ | awk ‘{print $NF}’ | paste -d” ” – – | awk -v a=$data_object_id ‘$2==a {print $1}’ >| scan1.txt

scan2 kdbr and display record.

cat scan1.txt |while read dba
do

echo $dba

kdbr_size=$(echo p dba $dba kdbt[0].kdbtnrow | rlbbed| grep kdbtnrow | awk ‘{print $NF}’)

echo $kdbr_size

begin=0
end=$[ kdbr_size -1 ]

echo $begin $end

echo set dba $dba

IFSOLD=$IFS
echo p dba $dba offset 0 kdbr | rlbbed | grep “sb2 kdbr” | sed “1s/^BBED> //” | awk -F”[][ ]+” -v a=$kdbr_size ‘$NF > a {print $3}’ | \
sed “s+^+x $ff dba $dba kdbr[+;s+$+]+”| rlbbed | sed -n ‘/^col /,/^BBED> /{s/^col .{13}: /^G/;/^$/d;/^BBED> /s/^.$/^F/;p;}’| tr -d “\n\r” | \
awk ‘BEGIN{RS=”^F”} {print $0}’ | while read line
do
echo “$line” | sed “s/^G//” | tr “^G” “\n” | sed -f ff.sed| paste -sd”|”
done
done

–//注意^G,^F的输入.linux下ctrl+v ctrl+g,ctrl+v ctrl+f. windows下ctrl+q ctrl+g,ctrl+q ctrl+f.

–//简单说明,不然自己以后都读不懂源代码: 生成的ff.sed脚本主要使用sed解决输出信息中数字,日期结尾存在空格问题以及NULL字段问题.

–//seq -f “%-1.0f” $begin_block $end_block 主要因为一些版本seq 在大于1e6时显示科学记数问题.

$ seq 4000000 4000001
4e+006
4e+006

$ seq -f “%-1.0f” 4000000 4000001
4000000
4000001
–//sed -n ‘/^col /,/^BBED> /{s/^col .{13}: /^G/;/^$/d;/^BBED> /s/^.*$/^F/;p;}’
–//使用bbed x命令的输出,替换类似col 0[3] @8153: 使用^G,并作为字段分隔符,替换^BBED>开头的行使用^F,并作为记录分隔符,并输出.

–//使用tr -d “\n\r” 删除回车换行,这样变为1行.过滤awk定义RS=”^F”,这样read line就仅仅接收1条记录.

–//scan begin_block to end_block,define Scope.调用bbed仅仅1次.

–//数据块扫描 调用bbed每块3次.

$ . fffext.sh 4 151 151 87108 nccntnnn
7369|SMITH|CLERK|7902|1980-12-17 00:00:00|800||20
7499|ALLEN|SALESMAN|7698|1981-02-20 00:00:00|1600|300|30
7521|WARD|SALESMAN|7698|1981-02-22 00:00:00|1250|500|30
7566|JONES|MANAGER|7839|1981-04-02 00:00:00|2975||20
7654|MARTIN|SALESMAN|7698|1981-09-28 00:00:00|1250|1400|30
7698|BLAKE|MANAGER|7839|1981-05-01 00:00:00|2850||30
7782|CLARK|MANAGER|7839|1981-06-09 00:00:00|2450||10
7788|SCOTT|ANALYST|7566|1987-04-19 00:00:00|3000||20
7839|KING|PRESIDENT||1981-11-17 00:00:00|5000||10
7844|TURNER|SALESMAN|7698|1981-09-08 00:00:00|1500|0|30
7876|ADAMS|CLERK|7788|1987-05-23 00:00:00|1100||20
7900|JAMES|CLERK|7698|1981-12-03 00:00:00|950||30
7902|FORD|ANALYST|7566|1981-12-03 00:00:00|3000||20
7934|MILLER|CLERK|7782|1982-01-23 00:00:00|1300||10

$ diff

Original: https://www.cnblogs.com/lfree/p/15378419.html
Author: lfree
Title: [20210930]bbed读取数据块7 fffext.sh.txt

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606214/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 附032.Kubernetes实现蓝绿发布

    蓝绿发布原理 蓝绿发布本质上是希望能优雅无误的迭代应用,以便于使应用平稳提供服务。通常是不停老版本的同时对新版本进行先发布,然后确认无误后进行流量切换,即并行部署。Kubernet…

    Linux 2023年6月13日
    093
  • Mac安装php和redis扩展

    Mac上有特定的包管理工具homebrew,也叫brew,这里的php安装用的就是brew 1安装php brew install php@7.0。 brw安装会自动管理依赖,所以…

    Linux 2023年5月28日
    094
  • AIX下安装bash

    在AIX系统下,默认是没有安装bash环境的,对于经常操作的维护人员来说,非常不方便,所以下面我们来动手安装bash。 1、确认系统是否已安装bash 方法1:之间敲bash命令,…

    Linux 2023年6月14日
    081
  • 为spring cloud config实现刷新动态掉的坑

    正常搭建配置中心,网上教程多,这里不讨论,只记坑也是为了后来者少花时间在这里,由于是当时研究了好久才写的文章,所以只能提供问题的原因,当然会给出印证的思路,闲话不多说进入正题! 版…

    Linux 2023年6月7日
    099
  • USB转多串口产品设计

    在部分应用场合下需要为计算机或其他主机扩展多个串口,常见的扩展方式有USB转多串、PCI/PCIe转多串、蓝牙和以太网等网络转多串口。现在大多数台式计算机和笔记本电脑出于轻型化需要…

    Linux 2023年6月7日
    092
  • redis服务器

    这一次主要讲下redis中服务器这个结构体相关代码,主要从是代码层面进行讲解 redis服务器 redis服务器结构体主要代码在 redis.h/redisServer,下面给出该…

    Linux 2023年6月13日
    095
  • [随记]-SpringMVC中的handler到底是什么东西

    HandlerMapping 初始化时候的 HandlerMapping 有,按顺序排列: requestMappingHandlerMapping beanNameHandler…

    Linux 2023年6月6日
    088
  • git使用命令行保留原分支迁移代码仓库

    有些时候我们需要对git仓库中的项目进行一些迁移,如从a账号迁移到b账号下,从github平台迁移到内部的gitlab平台等。一般平台会自带 migrate 或者 import 的…

    Linux 2023年6月7日
    0103
  • 6.19(junit–>在maven和Spring中的使用)

    写文章要不忘初心,今天也要继续努力~ 白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因…

    Linux 2023年6月7日
    0100
  • Java实现哈希表

    2.1、哈希冲突 冲突位置,把数据构建为链表结构。 装载因子=哈希表中的元素个数 / (散列表)哈希表的长度 装载因子越大,说明链表越长,性能就越低,那么哈希表就需要扩容,把数据迁…

    Linux 2023年6月14日
    086
  • Vimrc 配置文件

    配置信息 在linux当中保存在 ~/.vimrc, windows 存放在 ~/_vimrc 如果是 nvim 就放在 AppData\Local\nvim\init.vim 配…

    Linux 2023年6月7日
    086
  • SQL实战——03. 查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_no

    查找各个部门当前(to_date=’9999-01-01′)领导当前薪水详情以及其对应部门编号dept_noCREATE TABLE dept_manage…

    Linux 2023年6月14日
    0104
  • 网络协议及tcp协议详解

    说说TCP三次握手的过程? 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Ser…

    Linux 2023年6月13日
    096
  • Linux文件查找命令find与三剑客之grep

    一、find 根据文件的名称或者属性查找文件。 语法格式: find [查找范围] [参数] 参数: -name : 按照文件的名字查找文件 * :通配符 -iname : 按照文…

    Linux 2023年5月27日
    0160
  • MobaXterm左侧没有文件列表,没有SCP,不显示文件夹问题处理

    一般情况是你设置的session属性问题,具体做法是右键你的session,选edit session,SSH 如下图: 选择 SFTP protocol 并勾选 Follow S…

    Linux 2023年5月27日
    0144
  • linux–文件系统

    才开始接触linux是这样: 这个是shell界面 根目录下的文件 : linux在路径中不使用盘符;采用的是虚拟目录(根目录’/’ 就是一个虚拟目录) ,…

    Linux 2023年6月14日
    0101
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球