Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

modify value's in CSV with bash-script

Tags:

bash

sh

csv

bc

I've the following CSV file's:

2012-07-12 15:30:09; 353.2
2012-07-12 15:45:08; 347.4
2012-07-12 16:00:08; 197.6
2012-07-12 16:15:08; 308.2
2012-07-12 16:30:09; 352.6

What I want to do is modify the value in the 2nd column...

What I already can do is extract the value and modify it this way:

#!/bin/bash
cut -d ";" -f2 $1 > .tmp.csv
for num in $(cat .tmp.csv)
    do
        (echo "scale=2;$num/5" | bc -l >> .tmp2.csv)
done
rm .tmp.csv
rm .tmp2.csv

But I need to have column1 in that file too...

I hope one of you can give me a hint, I'm just stuck!

like image 544
Mirco Schmidt Avatar asked Dec 21 '22 18:12

Mirco Schmidt


2 Answers

From your code, this is what I understood

Input

2012-07-12 15:30:09; 353.2 
2012-07-12 15:45:08; 347.4 
2012-07-12 16:00:08; 197.6 
2012-07-12 16:15:08; 308.2 
2012-07-12 16:30:09; 352.6 

Awk code

awk -F ";" '{print $1 ";" $2/5}' input

Output

2012-07-12 15:30:09;70.64
2012-07-12 15:45:08;69.48
2012-07-12 16:00:08;39.52
2012-07-12 16:15:08;61.64
2012-07-12 16:30:09;70.52
like image 143
Debaditya Avatar answered Dec 27 '22 18:12

Debaditya


One way, using awk:

awk '{ $NF = $NF/5 }1' file.txt

Results:

2012-07-12 15:30:09; 70.64
2012-07-12 15:45:08; 69.48
2012-07-12 16:00:08; 39.52
2012-07-12 16:15:08; 61.64
2012-07-12 16:30:09; 70.52

HTH

like image 21
Steve Avatar answered Dec 27 '22 19:12

Steve