使用具有多个记录的awk命令删除逗号

时间:2016-01-19 03:58:40

标签: shell awk

我说我的记录是这样的。 输入

1,1,1,1.213,1,1,1.23
2,2,2,2.345,2,2,2.33
3,3,3,3.456,3,3,3.44

我想要像这样

输出

1,1,1,1,1,1,1.23
2,2,2,2,2,2,2.33
3,3,3,3,3,3,3.44

如何仅删除第4列的逗号?,我不想删除最后一列的逗号

2 个答案:

答案 0 :(得分:2)

您可以使用:

awk -F"," '{print $1,$2,$3,int($4),$5,$6,$7}'

我猜你正在寻找int()

示例:

  

$ cat test

1,1,1,1.213,1,1,1.23
2,2,2,2.345,2,2,2.33
3,3,3,3.456,3,3,3.44
  

$ awk -F"," '{print $1,$2,$3,int($4),$5,$6,$7}' test

1 1 1 1 1 1 1.23
2 2 2 2 2 2 2.33
3 3 3 3 3 3 3.44

编辑(来自ccf的好建议):

您可以使用此代替上面的awk命令的长版本。

$ awk -F',' '{$4=int($4); print}'
1,1,1,1.213,1,1,1.23
1 1 1 1 1 1 1.23

答案 1 :(得分:1)

如果temp.txt有输入,那么

$ cat temp.txt | sed 's/\.[0-9]\+//1'
1,1,1,1,1,1,1.23
2,2,2,2,2,2,2.33
3,3,3,3,3,3,3.44

1结尾意味着,只替换第一场比赛。