sed—将所有hbase表名保存到bash数组

eqzww0vc  于 2021-06-08  发布在  Hbase
关注(0)|答案(1)|浏览(420)

我想在bash脚本中的数组中存储所有hbase表的名称。
全部 sed 可以接受修补程序。
所有更好的解决方案(如 readarray 它从一些Zookeeper文件我不知道)是可以接受的
我有两个hbase表叫做 MY_TABLE_NAME_1 以及 MY_TABLE_NAME_2 ,所以我想要的是:

tables = (
  MY_TABLE_NAME_1
  MY_TABLE_NAME_2
)

我尝试的是:
基于cloudera操作系统脚本中的hbase shell:

echo "list" | /path/to/hbase/bin/hbase shell -n > /home/me/hbase-tables
readarray -t tables < /home/me/hbase-tables

但在我的内心 /home/me/hbase-tables 是:

MY_TABLE_NAME_1
MY_TABLE_NAME_2
2 row(s) in 0.3310 seconds

MY_TABLE_NAME_1
MY_TABLE_NAME_2
gv8xihay

gv8xihay1#

你可以用 readarray / mapfile 很好。但要删除重复项/跳过空行并删除不必要的字符串,需要使用 awk .
另外,您不需要创建一个临时文件,然后解析该文件,而是直接使用一种称为进程替换的技术,该技术允许命令的输出可用,就像它在临时文件中可用一样

mapfile -t output < <(echo "list" | /path/to/hbase/bin/hbase shell -n | awk '!unique[$0]++ && !/seconds/ && NF')

现在数组将只包含 hbase 输出。也就是说,您应该查找解决方案,将噪声作为查询输出的一部分进行消除,而不是以这种方式进行后期处理。

相关问题