具有IF条件的AWK

时间:2019-05-27 12:27:58

标签: awk

我有一个名为: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

但不起作用。我一直在寻找解决我问题的方法,但找不到。

2 个答案:

答案 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";