Using variable in sed

 
Thread Tools Search this Thread
Operating Systems OS X (Apple) Using variable in sed
# 8  
Old 02-25-2013
Still don't know exactly HOW it works (would like to), but it works fine! I found out that I can add as many lines to the variable as I want. It will insert all. Smilie

One last question:

At some point the somescript.sh will look like this:
Code:
#!/bin/sh
#  somecript.sh

somecommand1

somecommand2
command3a
command3b
command3c
command4a
command4b
command4c
command5a
command5b
command5c
command6a
command6b
command6c
#End

exit

It would be cleaner if there was a white line between every command. I tried to change the variable:
Code:
read -d '' command <<EOF
command3a
command3b
command3c

EOF

But it just skips the white line. Is there a trick for this? Or should I change the sed command?
# 9  
Old 03-04-2013
Up!

All I need is one extra line... Smilie
# 10  
Old 03-04-2013
Use the "a" (append) command of sed with line pattern. For example:

Code:
sed '/^pattern/ a \
' /path/to/input

will append a newline to every line which starts with "pattern". Notice that the newline character has to be escaped with "\", which is why the line is separated in two in the above.

As an aside: you probably got no answer any more because people thought you could figure that out yourself. This forum is about helping you help yourself, not doing your work for you. Not to know something is one thing, being to lazy another. You might want to think about that.

I hope this helps.

bakunin
# 11  
Old 03-04-2013
Thanks but I can't get it to work within my code. My code looks like this:
Code:
sed -ie '/#End/i\
'"${command//$'\n'/\\$'\n'}"'\
' /location/of/somescript.sh

# 12  
Old 03-04-2013
Quote:
Originally Posted by mattiasvdm
Thanks but I can't get it to work within my code.
I suggest consulting the sed man page ("man sed") to find out how to put more than one command in a sed script. You could also try a book (the one i liked most is Dale Dougherty, "sed & awk", O'Reilly).

I hope this helps.

bakunin
# 13  
Old 03-04-2013
I wonder how a multi-line $command works at all - because the sed i command wants a \ at the end of each line.

I suggest a while loop, so for each iteration sed runs with a one-line $command which can be empty.
Code:
while read command
do
sed -i '/#End/i\
'"$command"'\
' /location/of/somescript.sh
done << EOF
command3a
command3b
command3c

EOF

---------- Post updated at 11:13 AM ---------- Previous update was at 11:10 AM ----------

NB this already inserts an empty line.
Otherwise use
Code:
sed -i '/#End/i\
'"$command" /location/of/somescript.sh

# 14  
Old 03-06-2013
If you use GNU sed, you don't need the awkward newline after the i command. So you can write a simpler, easier-to read one-line script.
Code:
 sed -i '/#End/ i \thing-to-insert' somescript.sh

Also, to eliminate some confusion, you can write the sed script to an external file, and then use -f to execute the script. That can help make the syntax easier to read, and probably avoid some of the complexity related to quoting / not quoting $command.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to use the variable in sed?

version=git release=r8 echo lp-testsuite-git-r8.x86_64.rpm |sed -e "s/-$version-$release.*//g" I want to get lp-testsuite what's wrong with me ? (1 Reply)
Discussion started by: yanglei_fage
1 Replies

2. Red Hat

How to pass value of pwd as variable in SED to replace variable in a script file

Hi all, Hereby wish to have your advise for below: Main concept is I intend to get current directory of my script file. This script file will be copied to /etc/init.d. A string in this copy will be replaced with current directory value. Below is original script file: ... (6 Replies)
Discussion started by: cielle
6 Replies

3. Shell Programming and Scripting

sed with variable

Hi Friends in sed whether we can use variable.like the following expression. sed -i 's/ABC/$var/g' filename I am using Kernel 2.6.18-194.11.1.el5 RedHat linux. I have tried sed -i 's/ABC/"$var"/g' filename, still not working.:( Please help. Thanks in advance Joy (2 Replies)
Discussion started by: itsjoy2u
2 Replies

4. Shell Programming and Scripting

Expand an environment variable in sed, when the variable contains a slash

I'm trying to make a sed substitution where the substitution pattern is an environment variable to be expanded, but the variable contains a "slash". sed -e 's/<HOME_DIRECTORY>/'$HOME'/'This gives me the following error: sed: -e expression #1, char 21: unknown option to `s'Obviously this is... (2 Replies)
Discussion started by: Ilja
2 Replies

5. Shell Programming and Scripting

Insert a line including Variable & Carriage Return / sed command as Variable

I want to instert Category:XXXXX into the 2. line something like this should work, but I have somewhere the wrong sytanx. something with the linebreak goes wrong: sed "2i\\${n}Category:$cat\n" Sample: Titel Blahh Blahh abllk sdhsd sjdhf Blahh Blah Blahh Blahh Should look like... (2 Replies)
Discussion started by: lowmaster
2 Replies

6. Shell Programming and Scripting

using variable in sed

i need to use a value in the Variable to print a particular line from a file using sed command. i tried the below one but its is not working sed -n ' "$var"p ' abc.txt but its is not working please help me to sort out this. (3 Replies)
Discussion started by: Kochu77
3 Replies

7. Shell Programming and Scripting

Sed variable substitution when variable constructed of a directory path

Hello, i have another sed question.. I'm trying to do variable substition with sed and i'm running into a problem. my var1 is a string constructed like this: filename1 filerev1 filepath1 my var2 is another string constructed like this: filename2 filerev2 filepath2 when i do... (2 Replies)
Discussion started by: alrinno
2 Replies

8. Shell Programming and Scripting

sed with a variable

Hi, My shell script searches a VALUE in a file, copies it to a variable and updates a line in another file with this new VALUE (replacing the old) The value has a pattern- VALUE=`$$MyDate=11-11-2008 09.09.56.123456` (yes the $ - . = and space are all part of the string) I am having... (6 Replies)
Discussion started by: ngagemaniac
6 Replies

9. Shell Programming and Scripting

sed (variable)

HOw can I use any variable in sed command. For example I am using 'sed -e 's/?/$ORACLE_HOME/g' $file_name Here it replaces ? with $ORACLE_HOME. Instead of it I need actual value of $ORACLE_HOME. How can I do that? Please advice. Thanks in advance. Malay (13 Replies)
Discussion started by: malaymaru
13 Replies

10. UNIX for Dummies Questions & Answers

Doing a sed on a variable help !

Hi, So what I'm trying to do is I have these variables and if they have a dot in them , I want everyting before and including the dot removed. Any ideas ? Something like this I would want : $var = $var | sed 's/.*\.//' but that does't work. I want to save that removal $var... (2 Replies)
Discussion started by: seaten
2 Replies
Login or Register to Ask a Question