我有一个sample.hql文件,其中包含以下几行。
desc db.table1; desc db.table2; desc db.table3;
我正在尝试从外壳命令运行它,我想找出表中是否存在特定的列,例如-如果表1中存在col1,则输出应显示col1_1在db.able1中找到我不知道怎么找到它。我正在执行下面的命令
hive -f sample.hql | grep -q "<column_name>"
但我不确定如何从每个执行行中获取数据库和表名。
3ks5zfa01#
您可以让grep在-B之前和-A之后显示。下面的命令将向您显示之前的10行。这可能会让这项工作又快又脏地完成。
-B
-A
hive -f sample.hql | grep -B 10 -q "<column_name>"
如果您想更小心一点,可以尝试使用for循环,该循环一次为行提供一个配置单元。如果它找到该列,它将回显它在其中找到该列的表。(‘&&’仅在前一个命令成功时才执行代码)
# !/bin/bash for i in $(cat sample.hql); do hive -e "$i" | grep -q "<column_name>" && echo $i; done
1条答案
按热度按时间3ks5zfa01#
您可以让grep在
-B
之前和-A
之后显示。下面的命令将向您显示之前的10行。这可能会让这项工作又快又脏地完成。如果您想更小心一点,可以尝试使用for循环,该循环一次为行提供一个配置单元。如果它找到该列,它将回显它在其中找到该列的表。(‘&&’仅在前一个命令成功时才执行代码)