using awk to substitute data in a column delimited text file

using awk to substitute data in a column delimited text file

hello i would like to use awk to do the following calculation from the following snippet.

input file

C;2390   ;CV BOUILLOTTE 2L 2FACES NERVUREES            ;1.00       ;3552612239004;13417  ;25     ;50     ;   12;50000   ; ;     ;0       ; ;     ;0       ;
C;2400   ;BL 125 EPINGLES DE SURETE                    ;.46        ;3552611240001;10032  ;24     ;240    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2410   ;BL KIT DE COUTURE                            ;.68        ;3552611241008;9816   ;24     ;48     ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2510   ;CV 3 POTS ENV 150 PICS COCKTAIL BOIS         ;.36        ;3552612251006;2918   ;24     ;288    ;   12;18144   ; ;     ;0       ; ;     ;0       ;
C;2511   ;CV 5 ETUIS ENV 150 PICS COCKTAIL BOIS        ;.46        ;3552612251105;0      ;24     ;144    ;   12;18144   ; ;     ;0       ; ;     ;0       ;
C;2513   ;CV 2 DISTRIBUTEURS 200 PICS COCKTAIL BOIS    ;.46        ;3552612251303;13944  ;24     ;144    ;   12;8640    ; ;     ;0       ; ;     ;0       ;
C;2515   ;CV ENV 100 BROCHETTES BBQ BOIS 30CM          ;.46        ;3552612251501;15300  ;50     ;100    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2517   ;CV ENVIRON 100 PICS BROCHETTES BAMBOU 30CM   ;.50        ;3552612251709;0      ;50     ;100    ;   12;20000   ; ;     ;0       ; ;     ;0       ;
C;2518   ;PBH SACHET DE 40 PAILLES CHALUMEAU FLEXIBLES ;.10        ;3552612251808;49743  ;50     ;250    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2520   ;VRC MARTINET                                 ;.60        ;3552610252005;56484  ;36     ;216    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2522   ;CV 3 LAVETTES MICROFIBRES 30X30CM  MAGIC     ;.72        ;3552615252208;4498   ;24     ;144    ;   12;15120   ; ;     ;0       ; ;     ;0       ;

output file

C;2390   ;CV BOUILLOTTE 2L 2FACES NERVUREES            ;3.00        ;3552612239004;13417  ;25     ;50     ;   12;50000   ; ;     ;0       ; ;     ;0       ;
C;2400   ;BL 125 EPINGLES DE SURETE                    ;2.46        ;3552611240001;10032  ;24     ;240    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2410   ;BL KIT DE COUTURE                            ;2.68        ;3552611241008;9816   ;24     ;48     ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2510   ;CV 3 POTS ENV 150 PICS COCKTAIL BOIS         ;2.36        ;3552612251006;2918   ;24     ;288    ;   12;18144   ; ;     ;0       ; ;     ;0       ;
C;2511   ;CV 5 ETUIS ENV 150 PICS COCKTAIL BOIS        ;2.46        ;3552612251105;0      ;24     ;144    ;   12;18144   ; ;     ;0       ; ;     ;0       ;
C;2513   ;CV 2 DISTRIBUTEURS 200 PICS COCKTAIL BOIS    ;2.46        ;3552612251303;13944  ;24     ;144    ;   12;8640    ; ;     ;0       ; ;     ;0       ;
C;2515   ;CV ENV 100 BROCHETTES BBQ BOIS 30CM          ;2.46        ;3552612251501;15300  ;50     ;100    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2517   ;CV ENVIRON 100 PICS BROCHETTES BAMBOU 30CM   ;2.50        ;3552612251709;0      ;50     ;100    ;   12;20000   ; ;     ;0       ; ;     ;0       ;
C;2518   ;PBH SACHET DE 40 PAILLES CHALUMEAU FLEXIBLES ;2.10        ;3552612251808;49743  ;50     ;250    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2520   ;VRC MARTINET                                 ;2.60        ;3552610252005;56484  ;36     ;216    ;     ;0       ; ;     ;0       ; ;     ;0       ;
C;2522   ;CV 3 LAVETTES MICROFIBRES 30X30CM  MAGIC     ;2.72        ;3552615252208;4498   ;24     ;144    ;   12;15120   ; ;     ;0       ; ;     ;0       ;

which would mean adding 2 to the fourth column of each entry of the file.

i have been looking around the forum but so far did not find anything.

Thanking you in advance for your help on this matter.

awk -F";" '{$4+=2}1' OFS=";" filename
1 Like

Try:

awk -F\; -vOFS=";" '{$4+=2;$4=$4"\t"}1' file
1 Like

Thank you for all your replies, i have come up with the following answer to the problem

awk -v FS=";" -v OFS=";\t" -v RS="\r" '{print $1,$2,$3,$4+2,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16}' input > output