awk用一个命令替换多列特定字符

时间:2014-12-02 15:19:25

标签: awk

输入(a.txt)

aa <tab> c-c-c<tab>k-k-k<tab>
ll <tab> j-j-j <tab>v-v-v<tab>

需要的输出(b.txt)

aa <tab> c.c.c<tab> k.k.k<tab>
ll <tab> j.j.j <tab>v.v.v<tab>

请纠正我:(这不起作用,只有在我要求更换11美元专栏时才有效)

awk -F "\t" -v OFS="\t" '{gsub("-",".",$11,&14,&17); print;}' /home/a.txt > /home/b.txt

2 个答案:

答案 0 :(得分:2)

如果要对所有字段进行全局替换,则无需在gsub函数中指定字段编号。

awk '{gsub(/-/,".")}1' /home/a.txt > /home/b.txt

答案 1 :(得分:0)

似乎你不想在整行上做替换,只需要3列,然后就这样做了:

awk -F "\t" -v OFS="\t" 'BEGIN{a[11]=a[14]=a[17]=7}
                      {for(x in a)gsub("-",".",$x)}7' /home/a.txt > /home/b.txt