I am working with a csv file and I want to truncate the numbers with decimals of a specific column. Three of the lines are:
123;rr;2;RRyO, chess mobil;pio;25.766;1;0;24353;21.876;;S
1243;rho;9;RpO, chess yext cat;downpio;67.98;1;0;237753;25.346;;S
1243;rho;9;RpO, chess yext cat;pio;73;1;0;237753;25.346;;S
And I want this output:
123;rr;2;RRyO, chess mobil;pio;25;1;0;24353;21.876;;S
1243;rho;9;RpO, chess yext cat;downpio;67;1;0;237753;25.346;;S
1243;rho;9;RpO, chess yext cat;pio;73;1;0;237753;25.346;;S
I have tried thies code:
sed -e '/^.\+pio$/,/^\..\*;[[:digit:]];[[:digit:]];.\*;.\*;.\*;.\*[[:space:]]$/d' data.csv
but doesnt work... Any suggestion, please?
You can use
sed 's/^\(\([^;]*;\)\{5\}[0-9]*\)[^;]*/\1/' data.csv
Details:
^
- start of string\(\([^;]*;\)\{5\}[0-9]*\)
- Group 1 (\1
):
\([^;]*;\)\{5\}
- five occurrences of any zero or more chars other than ;
and a ;
[0-9]*
- zero or more digits[^;]*
- zero or more chars other than ;
.See the online demo:
s='123;rr;2;RRyO, chess mobil;pio;25.766;1;0;24353;21.876;;S
1243;rho;9;RpO, chess yext cat;downpio;67.98;1;0;237753;25.346;;S
1243;rho;9;RpO, chess yext cat;pio;73;1;0;237753;25.346;;S'
sed 's/^\(\([^;]*;\)\{5\}[0-9]*\)[^;]*/\1/' <<< "$s"
Output:
123;rr;2;RRyO, chess mobil;pio;25;1;0;24353;21.876;;S
1243;rho;9;RpO, chess yext cat;downpio;67;1;0;237753;25.346;;S
1243;rho;9;RpO, chess yext cat;pio;73;1;0;237753;25.346;;S