1 votes

L'instruction Awk ne fonctionne pas pour le symbole deux-points

Je travaille sur un AWK script qui doit remplacer la valeur de 3 colonnes d'une feuille excel csv par une valeur particulière et l'awk doit ignorer la première et la dernière ligne. Le problème est que la chaîne de caractères que j'essaie de mettre à jour est à l'origine du problème :

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

Mais, il me donne une erreur de syntaxe à : : .

Exemple de 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 +++

Mise à jour d'un autre scénario : Je me suis retrouvé coincé dans ce cas. Je voulais mettre à jour le troisième champ avec la valeur ci-dessous :

["LDGF","GHFT"]

J'ai essayé de mettre à jour le formulaire ci-dessous, mais il ne met à jour qu'un [] vide.

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

J'ai également besoin de savoir comment mettre à jour plusieurs colonnes dans une seule déclaration.

3voto

steeldriver Points 118154

Pour ajouter/préparer la valeur de la variable sq à chaîne de caractères ops_data<dbms=Teradata::instance=idw-prod> ce dernier doit être cité :

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

ou plus lisiblement

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

Ex.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X