02-16-2013
[Help] Grep, Variables, IF statements... Fun
Hello, this will be my first post. I've been browsing around for a bit and have found a lot of useful information on here, hopefully a solution can be provided to me.
Issue:
Alright, I am looking to search for strings within a file using variables.
I have a script that will accept 3 or 4 parameters, 3 is required 4th isn't mandatory.
I would like to search the text file for the 3 parameters matching within the same line, if they do match then I want to remove that line and replace it with my new one, basically it would update the 4th parameter if set, and avoid duplicate entries.
Currently this is what I have gotten:
input= egrep -e '$domain\s+$type\s+$item' ~/etc/security/limits.conf
if [ "$input" == "" ]; then
echo $domain $type $item $value >>~/etc/security/limits.conf
echo \"$domain\" \"$type\" \"$item\" \"$value\" has been successfully added to your limits.conf file.
else
cat ~/etc/security/limits.conf | egrep -v "$domain|$type|$item" >~/etc/security/limits.conf1
rm -rf ~/etc/security/limits.conf
mv ~/etc/security/limits.conf1 ~/etc/security/limits.conf
echo $domain $type $item $value >>~/etc/security/limits.conf
echo \"$domain\" \"$type\" \"$item\" \"$value\" has been successfully added to your limits.conf file.
exit 0
fi
Now I already know that the input=egrep etc.. will not work, it works if I hard code some values but it won't accept that variables. Basically I have domain=$1, type=$2 and so on.
I would like it so that if all 3 variables are not matched within ONE line, than it will just append the parameters to the end of the file, BUT if the parameters do match then I want them to be deleted. and appended to the file. I know I can use other things like sed and awk, but I have yet to learn it, I don't mind learning how to use other commands if there's any express lessons that could be given to me for this instance before I start learning them in class.
This is for a school assignment, and all help is very much appreciated, but I'd also like to learn why and how it works/doesn't so if you can provide answers to that as well that would be great !
Not quite sure if my "if statement" used to decide between if the parameters exist or not is even that strong or good, but I am new to programming, scripting "bashing" so I welcome all constructive criticism
Thank you,
Jon
Last edited by JonLaberge; 02-17-2013 at 12:01 AM..
Reason: Forgot to mention.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Being new to shell scripting I hope this question isn't too elementary but here goes.
I run a grep statement - grep 'sqr' sqrmodule.par and the grep statement returns correctly the information that I'm looking for. Now I want to take the output from the grep statement and load it into a... (2 Replies)
Discussion started by: gettingstarted
2 Replies
2. UNIX for Advanced & Expert Users
Hello-
The code below works fine expect that it does not update the table CTL_INTERFACE "red highlight". Any idea what I'm doing wrong here?
Thanks:D
# coNNECT to the database and insert a row then get the new row id
cycle_id=`sqlplus -S $XXX_USER/$XXX_PW@$XXX_CONNECT << EOF
SET ECHO... (3 Replies)
Discussion started by: Nomaad
3 Replies
3. Shell Programming and Scripting
i have such awk working fine but how to use variable instead of strings
awk '/asdasd.*asda.*asdasd/' file2.txt
This is not working:
awk '/${a}.*${b}.*${c}/' file2.txt
Thanks & regards
Peter (7 Replies)
Discussion started by: pp56825
7 Replies
4. Shell Programming and Scripting
i want to use multple sql count statements and store these count values in unix variable but in one connection only i.e. in only 1 time database should be hit ,which is the main requirement. (1 Reply)
Discussion started by: sw@pnil
1 Replies
5. Shell Programming and Scripting
Hi
I am wondering is it possible to combine two greps together
I have two greps.
grep "^,, *\." file
(grep the line which has a '.' in the third column)
grep "=" file
(grep the line which has = anywhere)
How to put them together so that if the content of the file that match either... (1 Reply)
Discussion started by: tiger66
1 Replies
6. Programming
Hi all,
I have a problem, I need a grep -v but, the patterns of the grep should be C variables.
Example:
char var1="h";
char var2="o";
char var3="d";
system("grep -v \"var1 var2 var3\" file.txt");
----
----
----
I try it but... Can u help me?
Thanks beforehand
P.S. Sorry for... (4 Replies)
Discussion started by: AbelBs
4 Replies
7. Shell Programming and Scripting
Help,
I have a ksh script that has some variables within the grep command, I am then setting another variable that greps the variables that have greps within them.
cat $WORKINGDIR/meter_list.txt | while read meter
do
serialnum=$(cat masterlogfile.txt | grep "$meter" | awk '{ print $19 }'... (7 Replies)
Discussion started by: srichard9
7 Replies
8. Shell Programming and Scripting
I would like to know if grep can extract the following requirement.
I have the folllowing piece of SQL in a file and need to grep the FROM part.
mp db-ter-fast-export C100_Input_Target_Table__table_ "${DB}"'/teradata.dbc' -select 'SELECT UPPER(trim(proj_id)) as proj_id,
latest_job_id,... (9 Replies)
Discussion started by: anduzzi
9 Replies
9. Homework & Coursework Questions
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:
The issue I am having is part of a validation problem. My script will validate 3 or 4 parameters entered by the... (4 Replies)
Discussion started by: JonLaberge
4 Replies
10. Shell Programming and Scripting
Hi, I'm currently trying to use variables in grep on my script. Printing the variable via echo works fine. Also, if I hard coded the date of the appointment it works just fine. But, if I try to use the $DATE as an argument in grep it doesn't do anything.
#!/bin/bash
DATE=${2}/${3}/${1} ... (6 Replies)
Discussion started by: nuclearpenguin
6 Replies
RBASH(1) General Commands Manual RBASH(1)
NAME
rbash - restricted bash, see bash(1)
RESTRICTED SHELL
If bash is started with the name rbash, or the -r option is supplied at invocation, the shell becomes restricted. A restricted shell is
used to set up an environment more controlled than the standard shell. It behaves identically to bash with the exception that the follow-
ing are disallowed or not performed:
o changing directories with cd
o setting or unsetting the values of SHELL, PATH, ENV, or BASH_ENV
o specifying command names containing /
o specifying a file name containing a / as an argument to the . builtin command
o specifying a filename containing a slash as an argument to the -p option to the hash builtin command
o importing function definitions from the shell environment at startup
o parsing the value of SHELLOPTS from the shell environment at startup
o redirecting output using the >, >|, <>, >&, &>, and >> redirection operators
o using the exec builtin command to replace the shell with another command
o adding or deleting builtin commands with the -f and -d options to the enable builtin command
o using the enable builtin command to enable disabled shell builtins
o specifying the -p option to the command builtin command
o turning off restricted mode with set +r or set +o restricted.
These restrictions are enforced after any startup files are read.
When a command that is found to be a shell script is executed, rbash turns off any restrictions in the shell spawned to execute the script.
SEE ALSO
bash(1)
GNU Bash-4.0 2004 Apr 20 RBASH(1)