我有一个名为:input:
的文件。160957 docliente_up hdfs://nameservice1/user/hive/warehouse/docliente_up.db
160958 docliente_bu hdfs://nameservice1/user/hive/warehouse/docliente_bu.db
我正在用awk比较$ 2与以up结尾的单词
awk '{ if ($2 = "*_up" )
print "UPDATE DBS SET DB_LOCATION_URI=\"hdfs://nameservice1/databases_users/" $2"\"" " WHERE DB_ID=\""$1"\";";
else
print "UPDATE DBS SET DB_LOCATION_URI=\"hdfs://nameservice1/databases/" $2"\"" " WHERE DB_ID=\""$1"\";";}' input
但不起作用。我一直在寻找解决我问题的方法,但找不到。
答案 0 :(得分:0)
您必须在一个代码段中执行if并添加大括号:
awk ' { if ($2 ~ /_up/) { print "YES ", $0 } else { print "NO ", $0 } }' /tmp/SO
有关Stackoverflow的问题。
答案 1 :(得分:0)
请您尝试以下。
awk '($2 ~ /_up$/){print "UPDATE DBS SET DB_LOCATION_URI=\"hdfs://nameservice1/databases_users/" $2"\"" " WHERE DB_ID=\""$1"\";"}' Input_file
输出如下。
UPDATE DBS SET DB_LOCATION_URI="hdfs://nameservice1/databases_users/docliente_up" WHERE DB_ID="160957";