awk没有打印变量值

时间:2018-05-15 14:18:56

标签: shell awk sed hive sh

我正在查询一个hive表,它给出了多行输出。我想在输出的每一行的开头添加一个变量值。我正在运行以下命令,但变量的值未被替换:

var=case1
`hive -e "select date from table1 limit 5;" | awk -v b=$var 'print b $0'

这给了我以下输出:

b20180101
b20180202
b20180303
b20180404
b20180505

我期待以下输出:

case120180101
case120180202
case120180303
case120180404
case120180505

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

您将print语句放在awk条件区域而不是操作区域中:

awk -v b="$var" '{print b $0}'

答案 1 :(得分:0)

以下内容对您有帮助。

val="case1"
awk -v var="$val" '{print var $0}'  Input_file

OR

val="case1"
variable=$(your_command | awk -v var="$val" '{print var $0}')

如果您想将输出保存到Input_file本身,请在上面的代码中附加> temp_file && mv temp_file Input_file