我有一个csv
这样的文件
time my_account form_token address City
13:19:43 username1 aa57d1cd3d5d8845 Street name 1 City 1
13:19:43 username2 aa57d1cd3d5d8846 Street name 2 City 2
13:19:43 username3 aa57d1cd3d5d8847 Street name 3 City 3
13:19:43 username4 aa57d1cd3d5d8848 Street name 4 City 4
我想仅替换my_account
和form_token
下面的值,因此其他列应该相同而不会被替换。最终结果应该是这样的:
time my_account form_token address City
13:19:43 OhYeah12345 xxxaaaasssss1 Street name 1 City 1
13:19:43 OhYeah12346 xxxaaaasssss2 Street name 2 City 2
13:19:43 OhYeah12347 xxxaaaasssss3 Street name 3 City 3
13:19:43 OhYeah12348 xxxaaaasssss4 Street name 4 City 4
如果您想下载https://www.dropbox.com/s/t9damejyrlccyam/demo.csv?dl=0
,请输入以下文件如何使用bash执行此操作? 这就是我所做的:
awk -F ',' -v OFS=',' '$1 {$3="Another Street"; print}' /tmp/demo.csv
但是这个命令也替换了第一行的address
,我希望它从第二行开始,而不是
答案 0 :(得分:0)
您可以使用以下awk
命令并将输出重定向到新文件:
$ awk -v var="OhYeah123" -v var2="xxxaaaasssss" 'NR>1{$2=var substr($3,length($3)-1,length($3)); $3=var2 (NR-1); print}NR==1' file.in
time my_account form_token address City
13:19:43 OhYeah12345 xxxaaaasssss1 Street name 1 City 1
13:19:43 OhYeah12346 xxxaaaasssss2 Street name 2 City 2
13:19:43 OhYeah12347 xxxaaaasssss3 Street name 3 City 3
13:19:43 OhYeah12348 xxxaaaasssss4 Street name 4 City 4
我已经定义了2个变量,您可以在awk
中使用这些变量来替换您想要的任何字段。
NR==1
将打印第一行NR>1{$2=var substr($3,length($3)-1,length($3)); $3=var2 (NR-1); print}
从第二行开始,用变量内容替换第二个字段和第三个字段,然后将它与分别substr($3,length($3)-1,length($3)
和(NR-1)
连接起来,以便输出< / LI>
如果您不需要此逻辑,请使用:
$ awk -v var="OhYeah123" -v var2="xxxaaaasssss" 'NR>1{$2=var; $3=var2;}1' file.in