Awk 语句不适用于冒号符号

Awk 语句不适用于冒号符号

我正在编写一个 AWK 脚本,该脚本应将 excel csv 表中第 3 列的值替换为特定值,并且 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

sq将变量的值附加/添加到细绳 ops_data<dbms=Teradata::instance=idw-prod>,后者必须引用:

$3=sq"ops_data<dbms=Teradata::instance=idw-prod>"sq

或者更容易

$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 +++

相关内容