通过shell 获取hive库内的表备注,到shell数组中

准备知识

Shell 数组

#!/bin/bash
# author:菜鸟教程
# url:www.runoob.com

my_array=(A B "C" D)
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

 

$ chmod +x test.sh 
$ ./test.sh
第一个元素为: A
第二个元素为: B
第三个元素为: C
第四个元素为: D

准备调试:

获取表到字符串中:

kkk=`hive -e 'set hive.cli.print.header=false;use ipo;show tables'`;

然后

my_array=($kkk)

查看结果
echo "第一个元素为: ${my_array[0]}"
echo "第二个元素为: ${my_array[1]}"
echo "第三个元素为: ${my_array[2]}"
echo "第四个元素为: ${my_array[3]}"

 

$ echo "第一个元素为: ${my_array[0]}"
第一个元素为: tab_name
 echo "第二个元素为: ${my_array[1]}"
第二个元素为: basic_data_v_o_mobile_info_back_0501
$ echo "第三个元素为: ${my_array[2]}"
第三个元素为: basic_data_v_o_mobile_info_back_0502
$ echo "第四个元素为: ${my_array[3]}"
第四个元素为: basic_data_v_o_mobile_info_back_0503
 

 

这里就成功了。

也可以通过,把这个参数关掉:set hive.cli.print.header=false;

 

 

代码如下:

#!/bin/bash

kkk=`hive -e 'set hive.cli.print.header=false;use ipo;show tables'`;

my_array=($kkk)

#遍历输出

for(( i=0;i<${#my_array[@]};i++)) do
#${#array[@]}获取数组长度用于循环
echo ${my_array[i]};
done;

 

 

kkk=`hive -e 'set hive.cli.print.header=false;use vdm_fms;show create table v_o_invoice;'`;

kkk 变量中有效的信息:COMMENT '发票信息' ROW

#通过 cut 命令进行截取 的时候,分隔符只能是单个字符,所以,先要进行特定替换。

kkk=`echo ${kkk//COMMENT/+}` 

kkk=`echo ${kkk//ROW/#}`

echo `cut -d '+' -f 2 $kkk | cut -d '#' -f 1`

好像不科学,有很多commet

待优化

看是否可以通过正则表达式,来进行,特定字符串之间的截取。

 

#列出所有的包含字符串“13”的文件名
str=`cat dian.txt | grep "13"`
 

echo cut -d 'COMMENT' -f 2 k | cut -d 'ROW' -f 1

你可以使用linux cut 选取命令。bai
方法:
1. 你把du上面三行写入一个文件中 vim file
2. 测试cut命令 你的zhishell输入:cut -d '=' -f 2 file
解释:dao以=为分隔符,获取第二部分,获取=后面的部分
3. 熟悉cut命令后,你在shell输入
cut -d '=' -f 2 file | cut -d '"' -f 1
解释:第一次执行的输出作为管道命令 | 后面命令的参数。
获取第一个 = 后面的部分,再获取第一个 " 前面的部分。
你可以搜索linux cut命令

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值