[ad_1]
Following script will change the third column of the input file into the number that you require and the output should be sorted for the third field.
- Script : torun.sh
filename=”input.txt”
cat input.txt | while read line
do
key=`echo $line | awk '{print $3}'`
res=`echo $key % 4 | bc`
newvalue=$key
if [ $res -eq "0" ]
then
newvalue=`expr $key - 2`
fi
if [ $res -eq "1" ]
then
newvalue=`expr $key + 2`
fi
if [ $res -eq "2" ]
then
newvalue=`expr $key - 1`
fi
if [ $res -eq "3" ]
then
newvalue=`expr $key + 1`
fi
echo $line | awk -v v1="$newvalue" '{$3=v1; print}'
done
How to run : ./tunrun.sh | sort -k 3
Please note that awk changes the delimiter of the column to single space. I am not sure whether multiple space or tab is your delimiter. We can easily fix the script to properly display the line with the correct delimiter once you confirm.
[ad_2]
solved Renumbering of a column and replace of lines in the file