How to manipulate a text file and store each version for every changes in a directory?


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers How to manipulate a text file and store each version for every changes in a directory?
# 1  
Old 05-13-2019
How to manipulate a text file and store each version for every changes in a directory?

I attached both pictureImage and *.txt file of a sample work file. In this file Reactions which only start with "r1f", "r2f", "r3f"......and so on. And for each reaction the reaction rates is situated couple of lines later with a "+" sign.

For each reaction rate there are three numbers. I want to change the first And 3rd numbers in reaction rates with +/-75%. For each changes in the file I want to store them in a directory. How can I do it?



Here is a piece of code that i am working with




Code:
#!/bin/bash 

           #usage thisScript inputfile multiplier
inFile=$1 

multiplier=$2 

outFile=$inFile.$multiplier
 
grep -Po "^(r[0-9]*f[^ ]*|\+[^\!]*)" Prob01.txt | paste - - > stepOne 

function domath {     

                  local theanswer=$(echo $1 $multiplier | awk '{printf "%7.6E\n" , $1*$2}' | sed -E -e 's/[Ee]\+*/E/g' -e 's/^([^-])/+\1/g')    

                echo $theanswer 

                        }  

lines=$(cat stepOne | wc -l) 

for ((i=1;i<=$lines;i++)) do 

    suffix=$(printf "%02d" $i)     

line=1     

while read c1 c2 c3 c4; do         

case $line in              

                 $i)     lineOut=$(echo -e "$c1 \t $(domath $c2) $c3 $(domath $c4)")                

                             ;; 

                *)       lineOut=$(echo -e "$c1 \t $c2 $c3 $c4")                 

                          ;;        

               esac         

               echo $lineOut >> $outFile.$suffix         

               line=$((line+1))     

              done < $inFile 

done


Last edited by Atta; 05-13-2019 at 10:10 AM..
# 2  
Old 05-13-2019
Welcome to the forum.


I'm not sure I fully understand what you're after; some sample output file might help. But - why that complicated? You're using awk anyhow, so why not


Code:
$ awk -vMUL=$multiplier '/r[0-9]*f/ {RF = $1} /^\+/ {printf "%s\t%+7.6E\t%s\t%+7.6E\n", RF, $1*MUL, $2, $3*MUL}'  /tmp/Prob01.txt 
r1f:O2+2PD=>2O-PD	+5.250000E-02	+0.000000E00	+0.000000E+00
r2f:C3H6+2PD=>C3H6-PD	+7.350000E-01	+0.000000E00	+0.000000E+00
r3f:C3H6+O-PD+PD=>C3H5-PD+OH-PD	+2.060489E-01	+0.000000E00	+0.000000E+00
r4f:H2+2PD=>2H-PD	+3.450000E-02	+0.000000E00	+0.000000E+00
r5f:H2O+PD=>H2O-PD	+1.869339E-01	+0.000000E00	+0.000000E+00
r6f:CO2+PD=>CO2-PD	+3.750000E-03	+0.000000E00	+0.000000E+00

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Manipulate condition to send mail based on output text in file

Hi All, I have a working script as below. echo "Files loaded with $(cat /var/tmp/script.X1.out)" | mail -s "Files loaded with return code" mailid This script takes the output from script.X1.out file and appends the text "Files loaded with return code" and sends the email. Now what I want... (5 Replies)
Discussion started by: midhun3108
5 Replies

2. Shell Programming and Scripting

A better way to manipulate text

Good morning everyone, I'm currently trying to convert an environment variable into a string and then attach it at the end of a command and launch it. I have the following right now, but it's very ugly: AMI_TAGS="env=test,country=XX,city=blah,galaxy=blahblah" aws ec2 create-tags... (8 Replies)
Discussion started by: da1
8 Replies

3. Shell Programming and Scripting

Manipulate the text file in UNIX

Hi All, I have a file like below and i have 2 questions on this (They are 3 lines starts with 01 , 02 and 03. but is 01abc333644554 234 2334535 34534535355353 sfsdf345455 353 4543 jgkg tty 7676 02cdesdfsdfsdf 234 wesdfsdf 345345 234234 234234 2342342 dfgdfg sdfgg dgdgdg fgvfs... (6 Replies)
Discussion started by: siva.pitchai
6 Replies

4. Shell Programming and Scripting

How to take the filenames from a directory and store into a file??

hi, how can i take the file names from a directory and store only the filenames in the file. suppose i have a directory which contains the following files and subdirectories. $ ls -ltr total 16 -rw-rw-r-- 1 adm etc 4 Aug 6 20:37 s1.txt -rw-rw-r-- 1 adm etc 4 Aug 6 20:37 s2.txt... (11 Replies)
Discussion started by: Little
11 Replies

5. Shell Programming and Scripting

Hit multiple URL from a text file and store result in other test file

Hi, I have a problem where i have to hit multiple URL that are stored in a text file (input.txt) and save their output in different text file (output.txt) somewhat like : cat input.txt http://192.168.21.20:8080/PPUPS/international?NUmber=917875446856... (3 Replies)
Discussion started by: mukulverma2408
3 Replies

6. Shell Programming and Scripting

Copy a file from directroy/ prior version to the directory/ new version

How to copy a file from directroy/ prior version to the directory/ new version automatically. (4 Replies)
Discussion started by: roy1912
4 Replies

7. UNIX for Dummies Questions & Answers

Writing a loop to manipulate a script and store it in multiple output files

I have a script where the the 9th line looks like this: $filename=sprintf("250.1chr%d.ped", $N); I want to modify this script 1000 times, changing 250.1chr%d.ped to 250.2chr%d.ped, 250.3chr%.ped.......and so on all the way to 250.1000chr%d.ped and store each output in files called ... (4 Replies)
Discussion started by: evelibertine
4 Replies

8. UNIX for Dummies Questions & Answers

Question on how to manipulate a SIMPLE text file (using awk?)

I have a simple txt files that looks something like this (The title is a part of the text file) Student Grades --------------- 1 Tim Purser 89 2 John Wayne 56 3 Jenn Hawkins 95 4 Harry Potter 75 Here are my questions: How would I ONLY print the names of students... (2 Replies)
Discussion started by: ninjagod123
2 Replies

9. Shell Programming and Scripting

Parse text file in shell & store to variable

Hi, I need to parse a simple text file like below and store the word that starts with BR* to a variable say $BRno. I need to do this in sh script. NOTE: the length of the numbers following BR is in constant. And there is only 1 BRXXX in a file at a given time. .txt file: BR276828... (1 Reply)
Discussion started by: script2010
1 Replies

10. Shell Programming and Scripting

Store text file into a datastructure using Shell script

i have a text file and want to store it in a appropriate data structure (2-d is preferable) . The contents are as follows.. plzzz suggest an appropriate way to store the contents by using shell scripting (bash shell) text file Abc Def Ghi Hjk Lmn Opq Rst Uvw .... ..... .... .... ....... (3 Replies)
Discussion started by: cynosure2009
3 Replies
Login or Register to Ask a Question