如何在逗号定界符和自动递增之前替换数字

时间:2019-07-17 12:37:59

标签: bash awk sed

我有一个大致如下所示的txt文件:

1,text,text,text
2,text,text,text
3,text,text,text

但是有更多行,我只是想用第一个逗号替换新的数字,从1000开始,并在每行自动递增。有很多行,以至于手动行不通。

我认为我可以使用sed或awk快速完成此操作,但是我实在太菜鸟不懂。我最近得到的是使用sed 's/^[^,]*/1000/',但这只是将数字替换为1000,而不会在每一行增加它们。

2 个答案:

答案 0 :(得分:1)

使用awk:

awk 'BEGIN{OFS=FS=","}{$1=NR+999}1' yourfile

这说:

  1. 在处理文件之前,将字段分隔符和输出字段分隔符(FS和OFS)设置为逗号BEGIN{OFS=FS=","}
  2. 将第一个字段($1)设置为行号(NR)加上999 {$1=NR+999)}
  3. 打印行1

答案 1 :(得分:1)

将第一列中的新值与NR相关联是一个可行的解决方案。如果您想要更多的灵活性,可以尝试以下方法:

awk '$1~/[0-9]+/{$1=v++}1' FS=, OFS=, v=1000 input