Я работаю над сценарием AWK, который должен заменить значение 3 столбцов от Excel csv лист к конкретному значению, и awk должен проигнорировать первое и последнюю строку. Проблема со строкой, которую я пытаюсь обновить, вызывает проблему, Ниже команда, которую я использую:
awk -v sq="'" -F, '
t{print t} {a=t=$0}
NR>2{$3=sqops_data<dbms=Teradata::instance=idw-prod>sq;t=$0}
END {print a}
' OFS=, test1.csv
Но, это дает мне синтаксическую ошибку в::.
Демонстрационный CSV:
+++ Database Column - begin +++
Name,Host,Database,Database Schema,Database Table,Short Description,Long Description
CUST_ID,IDW-PROD,ops_data<dbms=Teradata::instance=pdw>,ops_data,D_FGHD_T,CUSTOMER IDENTIFIER,This field stores a unique value
+++ Database Column - end +++
Обновление другого сценария: Я произошел со всунутым это. Требуемый для обновления третьего поля к ниже значения:
["LDGF","GHFT"]
попробованный ниже, но это только обновляет пробел [].
awk -v sq="" -F, 't{print t} {a=t=$0} NR>2{$3=sq"["LDGF","GHFT"]"sq;t=$0} END {print a}' OFS=, test2.csv
Также потребность знать, как обновить несколько столбцов в одном операторе.
Добавлять/предварительно ожидать значение переменной sq
представлять в виде строки ops_data<dbms=Teradata::instance=idw-prod>
, последний должен быть заключен в кавычки:
$3=sq"ops_data<dbms=Teradata::instance=idw-prod>"sq
или больше readibly
$3 = sq "ops_data<dbms=Teradata::instance=idw-prod>" sq
Напр.
$ awk -v sq="'" -F, '
t{print t} {a=t=$0}
NR>2{$3=sq"ops_data<dbms=Teradata::instance=idw-prod>"sq;t=$0}
END {print a}
' OFS=, test1.csv
+++ Database Column - begin +++
Name,Host,Database,Database Schema,Database Table,Short Description,Long Description
CUST_ID,IDW-PROD,'ops_data<dbms=Teradata::instance=idw-prod>',ops_data,D_FGHD_T,CUSTOMER IDENTIFIER,This field stores a unique value
+++ Database Column - end +++