使用awk在CSV文件的整个列中更改值

时间:2018-09-17 06:30:05

标签: bash csv awk

我有CSV文件,如下例所示。我希望使用awk更改同一邮件的每一行中的邮件值。我用

awk -F ";" '{$18=firstname.lastname@testdata.invali} {print}' example_source_20180619.csv > erm.csv

但收到错误无效声明

  PNR;GES-SL-SAP;VERT-KANAL-SL-SAP;DSTNR-SAP;BTRBL-FKT;SCHWPKT-TAETIG-SL;SCHWPKT-TAETIG-TXT;BTRBL-TITEL-TXT;ANREDE;NAME;VORNAME;STRASSE;PLZ;ORT;DIENST-TEL-NR;TELEFAX-NR;MOBIL-TEL-NR;E-MAIL-ADR;INTERNET-ADR;P34F-KZ;HD-ANL-BER-KZ;VERT-KANAL-SL;
0000000;0010;2100 ;00602;Referent                      ;99;Sonstige/kein Schw.           ;ohne Titel                    ;Sir           ;John                       ;Doe                     ;Paul-Keller-Str. 21           ;92318;Neumarkt i.d.OPf.       ;phone;0941/phone;;mail@mail.com;http://web.de ;NO;NO;

1 个答案:

答案 0 :(得分:1)

awk -F ";" '{OFS=";"; $18="firstname.lastname@testdata.invali"; print;}'
  1. 将字符串放入"中。
  2. 使用;分隔命令。
  3. 还将输出分隔符也设置为;,以使输出类似于输入。
  4. 我想在第一行中替换电子邮件地址是没有意义的,因此我在下面添加了一个小写字母:

awk -F ";" '{ OFS=";"; if (NR != 1) { $18="firstname.lastname@testdata.invali"; } print; }'