[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:Frankut: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...
here is where im stuck I'm trying to use sed with something along the lines of:
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).
why ask the user to enter the date? if you're supposed to used the system's date just do
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)
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:
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:
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.
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:
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)