Issue
I have a .bed (.tsv) file that looks like this:
chr1 0 100000
chr1 100000 200000
chr1 200000 300000
chr1 300000 425234
I want to perform the operation -1 from only values in column 3 that end in "000", using sed or awk so that the output looks like:
chr1 0 99999
chr1 100000 199999
chr1 200000 299999
chr1 300000 425234
Embarassingly enough, the best I've come up with is:
awk {sub(/000$/,"999",$3); print $1,$2,$3}' oldfile > newfile
which simply substituites the last 3 digits for 999, rather than actually subtracting. Any help is appreciated is always!
Solution
Awk can easily perform arithmetic, too.
awk 'BEGIN{FS=OFS="\t"} $3 ~ /000$/ {$3 -= 1}1' oldfile > newfile
This is assuming all the lines in your file always have three fields and that you want to print all the lines.
sed
has no idea about even the simplest arithmetic so it's not particularly suitable for this.
Answered By - tripleee Answer Checked By - Clifford M. (WPSolving Volunteer)