更改列中的值

时间:2015-01-08 10:29:26

标签: bash

我的feature_vector.txt文件存在问题。

看起来像:

1,1
2,3
3,3
4,2
etc

我正在考虑使用AWK将第二列的值从第3行更改为零(0)到例如。第20行。

所以输出如下:

1,1
2,3
3,0
4,0
etc.

你有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以使用:

awk -F, -v OFS=, 'NR>=3 && NR<=20 {$2=0} 1' file
  • -F,将输入字段分隔符设置为逗号
  • -v OFS=,会将输出字段分隔符设置为逗号
  • 如果当前记录#为NR>=3 && NR<=20 ,则
  • >= 3 and <= 20执行阻止
  • $2=0会将第二个字段设为0
  • 1是默认的awk操作,用于打印值

答案 1 :(得分:1)

使用awk:

~$ awk -F',' '(NR>3 && NR<6){print $1",0"} (NR<=3||NR>=6)' f
1,1
2,2
3,3
4,0
5,0
6,6
7,7
8,8
9,9
10,10

使用sed:

~$ sed '3,6 s/,.*/,0/' f
1,1
2,2
3,0
4,0
5,0
6,0
7,7
8,8
9,9
10,10