У меня есть файл с именем: 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 со словами, заканчивающимися на
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
Skiel
27 Май 2019 в 15:27
2 ответа
Лучший ответ
Не могли бы вы попробовать следующее.
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";
0
RavinderSingh13
27 Май 2019 в 12:47
Вы должны сделать if в блоке и добавить фигурные скобки:
awk ' { if ($2 ~ /_up/) { print "YES ", $0 } else { print "NO ", $0 } }' /tmp/SO
Схожий вопрос по Stackoverflow.
0
Aif
27 Май 2019 в 13:09
Похожие вопросы
Новые вопросы
awk
AWK - это интерпретируемый язык программирования, разработанный для обработки текста и обычно используемый в качестве инструмента извлечения данных и составления отчетов. AWK используется в основном с системами Unix.