[Scripting]Find & replace using user input then replacing text after

 
Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions [Scripting]Find & replace using user input then replacing text after
# 1  
Old 11-16-2009
[Scripting]Find & replace using user input then replacing text after

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

1. The problem statement, all variables and given/known data:
(o) Checkout an auto part: should prompt the user for the name of the auto part
and borrower's name:
Name:
Borrower's name:
After reading the name of the auto part and the borrower's name, this option
should verify that the auto part exists and that it is checked in. If so, the status
should be changed in the database, otherwise an error message should be
generated. The system date should be used to update the checkout date.

Basically I have an entry in the file that lists the parts (auto.parts)
i.e
Brakes:Frank:in::

What needs to happen is someone goes to "check out" the part, they enter the part name then the borrower's name and then the date, then I need to have it edit auto.parts to reflect the person who borrowed the part and the date they borrowed it on.

Brakes:Frank:in:0:na

turns into

Brakes:FrankSmilieut:11/25/09:Mike

2. Relevant commands, code, scripts, algorithms:
Trying to use some variation of sed to do this

sed -i -e "/$copart/s/<old>/<new>/g" auto.parts

3. The attempts at a solution (include all code and scripts):

So far I have:
...roughly...
Code:
echo "Part to be checked out:"
read copart
echo "Enter date:"
read codate
echo "Enter borrower's name:"
read bname

here is where im stuck I'm trying to use sed with something along the lines of:

Code:
sed -i -e "/$copart/s/in/out/g" -e "/$copart/s/0/$codate/g" -e "/$copart/s/na/$bname/g" auto.parts

I want it to find he line that has $copart in it then change the two fields with 0 to the date and na to borrower's name.

I know the way im changing my date isn't how it is said in the instructions but im trying to get over this first hurdle before tackling that issue.

I've been chugging at this on my own scouring the net for HOURS not having any luck finding anything (anything I'm able to comprehend at this point my brain is fried) I'm **hoping** I can get some insight here.. im getting desperate

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Georgia State University | Atlanta, GA USA | Fasheng Qiu CSc 3320

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).
# 2  
Old 11-17-2009
why ask the user to enter the date? if you're supposed to used the system's date just do

Code:
codate=`date`

i haven't run the your code but it seems correct... what's the problem, you're not able to find the relevant line in the database? have you tried using grep?

---------- Post updated at 09:34 PM ---------- Previous update was at 09:29 PM ----------

i looked at the sed command, if you're trying to find the pattern you need the p command (at least you do on my system)

Code:
/$copart/s/in/out/pg

# 3  
Old 11-17-2009
I see two fundamental problems with your script:

1. User input has to be validated
You write the user has to enter the name of the part. That raises the question: what happens, if the part s/he enters is not in the database? It is ok, IMHO, if you say that this is beyond the scope of the homework or that false input can be silently ignored or whatever - it is just a fundamental truth that any input users provide should be validated somehow and you dhould have an answer to this question. If it is the correct data type (strings, digits, ...), if it is "well-formed" in some regard (for instance an IP address looks always the same - 4 numbers, 0-255, divided by 3 dots, etc.), and so on. If your program makes some assumption about which data it will be presented then check if indeed this data is what you have before you use it.

2. The sed-script
There are three basic forms of sed commands:

Code:
s/<expr1>/<expr2>/

/<expr>/ {
       command1
       command2
       ....
     }


/<expr1>/,/<expr2>/ {
       command1
       command2
       ....
     }

The first one is the most simple one: it applies the single command to replace <expr1> with <expr2> to every line. It might be that <expr1> is not part the line and the command will do nothing in this case, but still it is applied to the line (this is necessary to understand how sed works).

The second one is a more complex form: it will successively apply command1, then command2, etc. to lines which contain <expr1>. Of course the "list of commands" could also consist of only one command, in which case you can omit the curly braces and write:

Code:
/expr/command

An example: The following script will change only the lines that start with "abc". The change will be to first replace the "c" in "abc" to "<command1>", the second change will be to replace the line end with "<command2>", which effectively appends this to the end of the line.

Code:
sed '/^abc/ {
          s/c/<command1>/
          s/$/<command2>/
     }' in > out

file in:
========
abc will be changed
abd will not be changed
xxx next line will be changed, but this will not
abc

file out:
========
ab<command1> will be changed<command2>
abd will not be changed
xxx next line will be changed, but this will not
ab<command1><command2>

The third and last form ist the most complex one: it will apply a (list of) command(s) to a range of lines. It will start applying the list of commands when a line containing <expr1> is encountered and will do so on any subsequent lines untl <expr2> is found in a line. Then the commands are not applied to any line until <expr1> is found again, etc.. Similar to the second variant you can replace the list of commands by a single command where you can omit the curly braces:

Code:
/expr1/expr2/ommand

See if you can solve your problem now.

I hope this helps.

bakunin
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

find & Replace text using two non-unique delimiters.

I can find and replace text when the delimiters are unique. What I cannot do is replace text using two NON-unique delimiters: Ex., "This html code <text blah >contains <garbage blah blah >. All tags must go,<text > but some must be replaced with <garbage blah blah > without erasing other... (5 Replies)
Discussion started by: bedtime
5 Replies

2. Shell Programming and Scripting

How-To Check & Filter user input

Hi, On my Java webpage which invokes the shell script has two checkboxes viz ... apache and weblogic apache require one parameter i.e apache home from the user while Weblogic requires three or five params from the user vi.z weblogic_home or <jdk_home, config_home & pid>, username and... (4 Replies)
Discussion started by: mohtashims
4 Replies

3. Shell Programming and Scripting

Finding a text in files & replacing it with unique strings

Hallo Everyone. I have to admit I'm shell scripting illiterate . I need to find certain strings in several text files and replace each of the string by unique & corresponding text. I prepared a csv file with 3 columns: <filename>;<old_pattern>;<new_pattern> ... (5 Replies)
Discussion started by: gordom
5 Replies

4. Shell Programming and Scripting

Awk replacing file with user input

this section of the awk code i have here takes file to work with from the user. the user specifies the file name from the command line and the file name is assigned to the variable $FLIST awk 'BEGIN { while((getline < "'${FLIST}'")>0) S FS="\n"; RS="}\n" } now, i dont want... (5 Replies)
Discussion started by: SkySmart
5 Replies

5. Shell Programming and Scripting

awk + gsub to search multiple input values & replace with located string + extra text

Hi all. I have the following command that is successfully searching for any one of the strings on all lines of a file and replacing it with the instructed value. cat inputFile | awk '{gsub(/aaa|bbb|ccc|ddd/,"1234")}1' > outputFile This does in fact replace any occurrence of aaa, bbb,... (2 Replies)
Discussion started by: dazhoop
2 Replies

6. Shell Programming and Scripting

Search & Replacing text within a file

Hi all! I'm a newbie and I'm writing a script which will ask a user for data to search. I will then search for this data using grep and displaying this data back to the screen for the user to see. The user will then enter new data to replace the data searched. Now how do I replace this data... (4 Replies)
Discussion started by: macastor
4 Replies

7. Shell Programming and Scripting

Search & Replace in Multiple Files by reading a input file

Hi, I have a folder which contains multiple config.xml files and one input file, Please see the below format. Config Files format looks like :- Code: <application name="SAMPLE-ARCHIVE"> <NVPairs name="Global Variables"> <NameValuePair> ... (0 Replies)
Discussion started by: haiksuresh
0 Replies

8. Shell Programming and Scripting

Find & Replace string in multiple files & folders using perl

find . -type f -name "*.sql" -print|xargs perl -i -pe 's/pattern/replaced/g' this is simple logic to find and replace in multiple files & folders Hope this helps. Thanks Zaheer (0 Replies)
Discussion started by: Zaheer.mic
0 Replies

9. Shell Programming and Scripting

find & replace with user input

Trying to create a script/executable to replace "abc" text string in "myfile.htm" with input from a pop-up field. For example, launch this thing and a prompt is popped up asking the user to input what "abc" should be replaced with, then it inserts what the user inputs in place of abc in the... (3 Replies)
Discussion started by: mike909
3 Replies

10. UNIX for Dummies Questions & Answers

Replacing part of a text file with user input.

Ok, I am brand new to UNIX and I am trying to learn a cross between basic script and database use. I had got some ideas off the net on simple ideas for learning UNIX. I am working on creating a simple phone book program that allows myself to enter our employees from work into a phone book text... (0 Replies)
Discussion started by: georgefurbee
0 Replies
Login or Register to Ask a Question