我有一个包含3列的文本文件,如下所示。
$ cat test.txt
1,A,300
1,B,300
1,C,300
直到现在我试过了awk -F, '{$3=$3+1;print}' OFS=, test.txt
但输出结果如下:
1,A,301
1,B,301
1,C,301
&安培;下面是我想要的输出
现在我只想增加第三列,输出应该如下所示
1,A,300
1,B,301
1,C,302
如何实现所需的输出?
答案 0 :(得分:2)
awk 'BEGIN{x=0;FS=OFS=","} NF>1{$3=$3+x;x++}1' inputfile
1,A,300
1,B,301
1,C,302
说明:
BEGIN Block
:它包含x
,这是一个初始设置为零的计数器,FS
和OFS
。 /./
用于忽略空行(如果没有空行,则删除此部分)。 $3=$3+x
:这会将计数器的值添加到$3
。 x++
:增加cunter的值。
答案 1 :(得分:2)
可能是,假设线条像你的样品一样是顺序的)
awk -F ',' '{sub($3"$",$3+NR-1)}7' YourFile
它使用行数作为增量值,更改行结束而不是字段值(不同于awk POV,不需要使用分隔符重建行)
备选,如果在可修改的行之间为空或其他行(我任意使用NF
作为过滤器,但它取决于您的条件,如果有的话)
awk -F ',' 'NF{sub($3"$",$3+i++)}7' YourFile
答案 2 :(得分:0)
尝试此NR从1开始,因此NR -1应该为您提供正确的数字
awk -F, '{$3=$3+NR-1;print}' OFS=, test.txt
答案 3 :(得分:0)
又一个:
awk 'BEGIN{ FS=OFS="," } ($3+=i++)||1 ' file
答案 4 :(得分:-1)
awk'BEGIN {i = 0; FS = OFS =“,”} NF> 1 {$ 3 = $ 3 + i; i ++} 1'文件名
它包含x,这是一个初始设置为零的计数器FS和OFS。 /./用于忽略空白行(如果没有空白行,请删除此部分)。
$ 3 = $ 3 + i:这会将计数器的值加到$ 3。 i ++:增加计数器的值。必须并且应该在awk之间留出空格,并开始以及文件名和文件结尾