Need bash script to use a sed command as a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need bash script to use a sed command as a variable
# 1  
Old 08-21-2019
Need bash script to use a sed command as a variable

I need to be able to use a sed command as a variable in a bash script. I have the sed command that almost works the way I want it. the command is

sed -n '/inet/,/}/p' config.boot

This gets me this result:
Code:
inet 192.168.1.245
        }

I need to get the IP address into a variable so I can use it. How do I use sed to strip off the inet and the }.

How does the command need to be changed to get this to work?

Thanks

Last edited by Peasant; 08-21-2019 at 11:20 PM.. Reason: Code tags. Use them please.
# 2  
Old 08-21-2019
Code:
ip=$(sed -n '/inet/,/}/{/inet/{s/inet *//;{p;q}}}' config.boot)


Last edited by rdrtx1; 02-18-2020 at 08:28 PM..
# 3  
Old 08-21-2019
Thank you ! That works perfectly
# 4  
Old 08-21-2019
Could be simplified as you want to quit after the first ip encountered:
Code:
ip=$(sed -n '/inet */ {s///; p; q}' file)

This User Gave Thanks to RudiC For This Post:
# 5  
Old 08-22-2019
Note that with standard sed (non-GNU) there needs to be a ; before the trailing }:
Code:
ip=$(sed -n '/inet */{s///p;q;}' config.boot)

or we can avoid the braces by using negation style:
Code:
ip=$(sed '/inet */!d; s///; q' config.boot)

--
Alternatively we can avoid the sub shell / external command altogether with just standard shell:
Code:
until [ "$inet" = inet ]; do
  read inet ip
done < config.boot

--
Note also that these are all naive approaches without knowing what the format of config.boot looks like. Also, if the are more inet configs in the same file, these will only pick the first one indiscriminately.

Last edited by Scrutinizer; 08-22-2019 at 03:16 AM..
# 6  
Old 08-22-2019
As a professional you should expect the unexpected.
What happens if the read fails or the "inet" is not found?
The following ends the loop if the read fails.
Code:
while
  read inet ip &&
  [ "$inet" != inet ]
do
  :
done < config.boot

This User Gave Thanks to MadeInGermany For This Post:
# 7  
Old 08-22-2019
Yes that was indeed not a good approach. Also a good thing you pointed out that the shell approach only gives a proper answer if inet is present in the file. But this would still not solve that issue.

This may be more appropriate:

Code:
while read key value; do
  if [ "$key" = inet ]; then
    ip=$value
  fi
done < config.boot


Last edited by Scrutinizer; 08-22-2019 at 04:39 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Executing sed command inside a bash script

I want to run commands inside a bash script. An example is I want to pass the command in a string as regexp as an argument to the script, then run sed on the bash variable sed.sh regexp sed.sh "-i \"s/<p>//g\"" then call sed "$regexp" $fl (3 Replies)
Discussion started by: Kangol
3 Replies

2. Shell Programming and Scripting

sed command not accepting variable in shell script

I am using a shell script in fedora linux. While calling to the shell I am also passing an argument (var1=0.77) like shown below sh gossip.sh var1=0.77 in the shell following command is written (which doesn't work) sed - i -e 's@prob=@prob="$var1";//@g' file.txt Actually i want the... (7 Replies)
Discussion started by: Fakhar Hassan
7 Replies

3. Shell Programming and Scripting

Bash script set command to a variable

Hi, Will following set up work in bash script? I've got errors if assigning following binary command to a variable. But on the other hand, COMMAND="ls" works. Any explanation please? How can I assign binary command to a variable COMMAND then I can just call ${COMMAND}? COMMAND="rsync"... (3 Replies)
Discussion started by: hce
3 Replies

4. Shell Programming and Scripting

In bash script, how to assign output of a command to a variable while keeping tabs?

Hi, wondering if it's been asked before but didn't find matches from google. Basically I have this line: myvar=$(echo -e "a\tb") Now somehow the '\t' from the echo output gets replaced with white space and then stored in $myvar. It creates a problem for me later to use tab as delimiter to do... (2 Replies)
Discussion started by: birddie
2 Replies

5. Shell Programming and Scripting

bash variable (set via awk+sed) not working as expected

Hi! Been working on a script and I've been having a problem. I've finally narrowed it down to this variable I'm setting: servername=$(awk -v FS=\/ '{ print $7 } blah.txt | sed 's\/./-/g' | awk -v FS=\- '{print $1}')" This will essentially pare down a line like this: ... (7 Replies)
Discussion started by: creativedynamo
7 Replies

6. UNIX for Dummies Questions & Answers

sed insert command and variable expansion/command substitution

I know this script is crummy, but I was just messing around.. how do I get sed's insert command to allow variable expansion to show the filename? #!/bin/bash filename=`echo $0` /usr/bin/sed '/#include/ { i\ the filename is `$filename` }' $1 exit 0 (8 Replies)
Discussion started by: glev2005
8 Replies

7. 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

8. Shell Programming and Scripting

Special characters in a bash variable in sed

Hello, I am trying the following: echo __CHANGEME__ >> testfile VAR1="&&&" sed -i "s|__CHANGEME__|${VAR1}|" testfile cat testfile This results in testfile containing __CHANGEME____CHANGEME____CHANGEME__ Whereas I want it to result in &&& I understand that if VAR1="\&\&\&" then... (3 Replies)
Discussion started by: linuxnewbeee
3 Replies

9. Shell Programming and Scripting

passing variable from bash to perl from bash script

Hi All, I need to pass a variable to perl script from bash script, where in perl i am using if condition. Here is the cmd what i am using in perl FROM_DATE="06/05/2008" TO_DATE="07/05/2008" "perl -ne ' print if ( $_ >="$FROM_DATE" && $_ <= "$TO_DATE" ) ' filename" filename has... (10 Replies)
Discussion started by: arsidh
10 Replies

10. Shell Programming and Scripting

BASH -- sed -- variable

Hi, I'm new at bash scripting -- can anyone here help me about the sed command? I need to be able to edit and or delete a text from an outside file ie file.txt -- I'm passing a variable and not a string I was thinking of something like echo -n "What do you want to edit?: " read edit sed... (1 Reply)
Discussion started by: Imajean
1 Replies
Login or Register to Ask a Question