如何用序列号替换 CSV 中的第一个元素?

Duc*_*uck 4 cut csv

我有一个像这样的 csv 文件:

5/05/2017;03;07;30;35;43;01;03
9/05/2017;08;12;16;22;26;06;07
12/05/2017;02;20;28;29;44;03;09
16/05/2017;08;11;15;20;30;03;08
19/05/2017;09;11;12;19;30;04;09
23/05/2017;08;15;25;27;42;01;04
26/05/2017;05;07;26;36;39;02;10
...
Run Code Online (Sandbox Code Playgroud)

也就是说,一个日期,加上一系列数字,后跟;

我需要在第一个位置删除那个日期,并按顺序从 1004 开始......像这样:

1004;03;07;30;35;43;01;03
1005;08;12;16;22;26;06;07
1006;02;20;28;29;44;03;09
1007;08;11;15;20;30;03;08
1008;09;11;12;19;30;04;09
1009;08;15;25;27;42;01;04
1010;05;07;26;36;39;02;10
...
Run Code Online (Sandbox Code Playgroud)

我可以使用这个删除日期:

cut -f 2-8 -d';' 2.txt | xargs -I{}
Run Code Online (Sandbox Code Playgroud)

但是如何按顺序添加一个数字来替换日期?

Rom*_*est 9

awk解决方法:

awk -F';' 'BEGIN{ i=1004 }{ $1=i++ }1' OFS=';' file
Run Code Online (Sandbox Code Playgroud)
  • -F';' - 输入字段分隔符

  • i=1004- 起始增量

输出:

1004;03;07;30;35;43;01;03
1005;08;12;16;22;26;06;07
1006;02;20;28;29;44;03;09
1007;08;11;15;20;30;03;08
1008;09;11;12;19;30;04;09
1009;08;15;25;27;42;01;04
1010;05;07;26;36;39;02;10
Run Code Online (Sandbox Code Playgroud)

或者您可以i从“外部”传递变量:

awk -F';' '{ $1=i++ }1' i=1004 OFS=';' file
Run Code Online (Sandbox Code Playgroud)

  • 好的。我唯一要改变的是从 shell 传递起始值而不是在 awk 主体中进行硬编码:`awk -F';' '{$1=i++}1' i=1004 OFS=';' 文件` (2认同)

Sat*_*ura 6