passing variables to sed in ksh


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting passing variables to sed in ksh
# 1  
Old 06-04-2009
passing variables to sed in ksh

Hi, i need help passing variables to sed using ksh.
My goal is to get particular data from log files.
first i put a mark to the log files.

echo "TEST_"`date + %m_%d_%Y_%T"` >markFile

this will produce a 'markFile' which contain text like this
TEST_06_01_2009_21:55:09

then i put the mark in the beginning and the end of a test on file.log
cat markFile>>file.log
...
...Let the test run
...
cat markFile>>file.log

as a result the log file will look like this
some text 1...
some text 2...
TEST_06_01_2009_21:55:09
some text 3...
some text 4...
some text 5...
TEST_06_01_2009_21:55:09
some text 6...
some text 7...
some text 8...

now i need to take the lines between those marks
TEST_06_01_2009_21:55:09
some text 3...
some text 4...
some text 5...
TEST_06_01_2009_21:55:09

as i said i am using ksh
create a variable
mark=`cat markFile`
sed -n '/$mark/,/$mark/p' acu.log

the issue is in the sed... sed doesn't want to take the value of $mark. i think sed sees $mark as a command.

what should i do?
# 2  
Old 06-04-2009
Quote:
Originally Posted by d.anggrianto
Hi, i need help passing variables to sed using ksh.
My goal is to get particular data from log files.
first i put a mark to the log files.

echo "TEST_"`date + %m_%d_%Y_%T"` >markFile

this will produce a 'markFile' which contain text like this
TEST_06_01_2009_21:55:09

Why do you need a file? A variable is simpler:

Code:
mark=$(date +TEST_%m_%d_%Y_%T)

Quote:
then i put the mark in the beginning and the end of a test on file.log
cat markFile>>file.log

Even if you do use a file, you don't need cat to read a single line:

Code:
read mark < markFile
printf "%s\n" "$mark" >> file.log

Quote:

...
...Let the test run
...
cat markFile>>file.log

as a result the log file will look like this
some text 1...
some text 2...
TEST_06_01_2009_21:55:09
some text 3...
some text 4...
some text 5...
TEST_06_01_2009_21:55:09
some text 6...
some text 7...
some text 8...

now i need to take the lines between those marks
TEST_06_01_2009_21:55:09
some text 3...
some text 4...
some text 5...
TEST_06_01_2009_21:55:09

as i said i am using ksh
create a variable
mark=`cat markFile`
sed -n '/$mark/,/$mark/p' acu.log

the issue is in the sed... sed doesn't want to take the value of $mark. i think sed sees $mark as a command.

Variables are not expanded inside single quotes; sed sees $mark as literally that: a dollar sign followed by m-a-r-k.

Code:
sed -n "/$mark/,/$mark/p" acu.log

# 3  
Old 06-04-2009
thank you for the help.
it works.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

ksh While Loop - passing variables to functions

I'm reading a text file using a while loop but when I call a function from within this loop it exits that same iteration … even though there are many more lines in the file to be read. I thought it was something to do with the IFS setting but it appears that a function call (when run... (3 Replies)
Discussion started by: user052009
3 Replies

2. Shell Programming and Scripting

Passing variables to a sed function

Hi everyone, I've re-written some of our scripts to use more functions and I've run into a situation where passing a variable to a sed function does not work. My function is a one-liner sed command as follows: function StringSub() { sed -i "${1}/${2}/${3}/${4}" ${5} } Where ${1} through... (4 Replies)
Discussion started by: richardsantink
4 Replies

3. Shell Programming and Scripting

ksh passing to awk multiple dyanamic variables awk -v

Using ksh to call a function which has awk script embedded. It parses a long two element list file, filled with text numbers (I want column 2, beginning no sooner than line 45, that's the only known thing) . It's unknown where to start or end the data collection, dynamic variables will be used. ... (1 Reply)
Discussion started by: highnthemnts
1 Replies

4. Shell Programming and Scripting

Help with passing multiple variables into SED

Hello I am hoping you can help. I use ksh in Solaris9 I am trying to pass user imputed variables into SED but for some reason can only get SED to recognize one variable. I have experimented with te below command with putting ' ' and " " in different places but I cant seem to get it to... (8 Replies)
Discussion started by: lostincashe
8 Replies

5. Shell Programming and Scripting

sed pattern matching or passing variables

I need sed to add a "/>" to the end of a line that contains/starts with <meta. current line is <meta name="keywords" content="kayword 1, kwyword2"> and should be <meta name="keywords" content="kayword 1, kwyword2 " /> i need something like this? find . -name "*.html" -print0 | xargs... (6 Replies)
Discussion started by: sky_rivers
6 Replies

6. Shell Programming and Scripting

Passing variables to sed

Hi Folks, How can I make the following to work from a korn shell? old="OLDSTRING" new="NEWSTRING" file="myfile.txt" sed -n 's/$old/$new/gp' $file Thanks in advance rogers42 (3 Replies)
Discussion started by: rogers42
3 Replies

7. Shell Programming and Scripting

passing variables to sed function in a script ....

Hello , I have a script named testscript.sh wherein I have two variables $var and $final (both of which contain a number) I have a sed write function inside this script as follows: sed '1,2 w somefile.txt' fromfile.txt Now , in the above i want to pass $var and $final instead of... (2 Replies)
Discussion started by: shweta_d
2 Replies

8. Shell Programming and Scripting

passing variables to sed inside script

I am trying to pass a regular expression variable from a simple script to sed to remove entries from a text file e.g. a='aaaa bbbb cccc ...|...:' then executing sed from the script sed s'/"'$a"'//g <$FILE > $FILE"_"1 my output file is always the same as the input file !! any... (5 Replies)
Discussion started by: Daniel234
5 Replies

9. Shell Programming and Scripting

passing variables to awk from ksh script

I'm trying to write a ksh script that uses awk, but I want to pass variables to awk. For example (not working): if ];then searchstr=$1 lsof -i | awk '{if($9~/SEARCHSTR/) print $2} SEARCHSTR=$searchstr' else echo "usage: $0 <search string>" fi I tried several options. Is it... (3 Replies)
Discussion started by: rein
3 Replies

10. Shell Programming and Scripting

Passing variables to sed

Hi folks, I'm looking for a solution to pass variables to a sed-command. I'm reading a lot of threats and also the q&a "How can I use a variable in sed?". None of these commands works. I'm using AIX 5.2. I want to do the following: NUMBER=` echo 38341` | sed -n '/$NUMBER/p' an obtained... (3 Replies)
Discussion started by: jfisch
3 Replies
Login or Register to Ask a Question