Оператор Awk к не работе для символа двоеточия

Я работаю над сценарием 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

Также потребность знать, как обновить несколько столбцов в одном операторе.

1
задан 2 August 2019 в 10:17

1 ответ

Добавлять/предварительно ожидать значение переменной 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 +++
3
ответ дан 3 December 2019 в 07:20

Другие вопросы по тегам:

Похожие вопросы: