CSVの最初の要素をシリアル番号に置き換えるには?

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
...

つまり、日付の後に一連の数字が続きます;

最初の場所から日付を削除し、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
...

以下を使用して日付を削除できます。

cut -f 2-8 -d';' 2.txt | xargs -I{}

しかし、日付を置き換えるために数字を追加する方法は?

ベストアンサー1

アッ解決策:

awk -F';' 'BEGIN{ i=1004 }{ $1=i++ }1' OFS=';' file
  • -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

iあるいは、「外部」変数を渡すこともできます。

awk -F';' '{ $1=i++ }1' i=1004 OFS=';' file

おすすめ記事