Replace substring from a string variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace substring from a string variable
# 1  
Old 01-15-2019
Replace substring from a string variable

Hi,

Wish to remove "DR-" from the string variable (var).

Code:
 var="DR-SERVER1"
 var=`echo $var | sed -e 's/DR-//g'`
 echo "$var"


Expected Output:
Quote:
SERVER1
However, I get the below error:

Quote:
line 11: [[: -: syntax error: operand expected (error token is "-")
Can you please suggest.
# 2  
Old 01-15-2019
That error message comes from somewhere else in your script, not from these three lines..
# 3  
Old 01-15-2019
Thank you for pointing out. i will close this thread.
# 4  
Old 01-16-2019
Hi mohtashims,
As you have been told many times before, it ALWAYS helps if you tell us what operating system and shell you're using when you start a thread.

Even though the diagnostic messages you reported were not coming from the code you showed us, you should still consider updating that code. Firing up a sub-shell to perform a command substitution, an echo, and sed to do the job of a simple parameter substitution is a great way to slow down your script and make your system less responsive to any other task running on your system at the same time.

Unless you're using a pure Bourne shell from the 1970's, please consider changing:
Code:
 var="DR-SERVER1"
 var=`echo $var | sed -e 's/DR-//g'`
 echo "$var"

to:
Code:
 var="DR-SERVER1"
 var=${var#DR-}
 echo "$var"

This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 01-16-2019
Mohtashims,
This is at least the second thread in which you have used constructs like
Code:
var1=xyz123
var2=`echo $var1 | command1 | command2`

to modify variables only to have others show how parameter expansions can do the same thing. Please read the manual page for your shell, e.g.
Code:
man bash
man sh
man dash

and in the man page browser, type
Code:
/  parameter expansion

That is slash followed by two spaces followed by "parameter expansion". This should take you to the section on parameter expansion, which will show how you can manipulate the contents of a shell variable within the shell you are scripting in. By using these constructs you will produce faster, cleaner code, and perhaps reduce some of the problems these other constructs introduce.

Who knows? Maybe in the near future you will be helping other members of this forum with their shell-variable manipulation.

Andrew
These 2 Users Gave Thanks to apmcd47 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Replace substring by longest string in common field (awk)

Hi, Let's say I have a pipe-separated input like so: name_10|A|BCCC|cat_1 name_11|B|DE|cat_2 name_10|A|BC|cat_3 name_11|B|DEEEEEE|cat_4 Using awk, for records with common field 2, I am trying to replace all the shortest substrings by the longest string in field 3. In order to get the... (5 Replies)
Discussion started by: beca123456
5 Replies

2. Shell Programming and Scripting

How to replace string in variable?

Hello, I have simple while and for loops in a shell script and I would like to replace some characters in COL2 when I run it. I am on ubuntu 14.04 while read COL1 COL2 COL3 COL4 do name=$COL2 #cat $name | sed -i "s|_| |g" $name for i in $COL3 $COL4 do some codes ...... run $i b="$name"... (11 Replies)
Discussion started by: baris35
11 Replies

3. UNIX for Dummies Questions & Answers

Replace variable string with text

Hi All, Hoping someone can help.... I am trying to work out how I can ammend a log file to remove variable strings in order to remove confidential information which I cant pass on. As an example I have used phone numbers. A large log file contains multiple lines containing something like the... (6 Replies)
Discussion started by: mutley2202
6 Replies

4. UNIX for Dummies Questions & Answers

get substring from string variable

Hi Dears, How to use variable in string location of expression ${string:index:length} to get substring from string? I encounter error "bad substitution" when I use expression ${$var:0:5} to get first 5 characters from $var. Could you please help me out of this? Thanks! (2 Replies)
Discussion started by: crest.boy
2 Replies

5. Shell Programming and Scripting

replace (sed?) a string in file with multiple lines (string) from variable

Can someone tell me how I can do this? e.g: a=$(echo -e wert trewt ertert ertert ertert erttert erterte rterter tertertert ert) How do i replace the STRING with $a? I try this: sed -i 's/STRING/'"$a"'/g' filename.ext but this don' t work (2 Replies)
Discussion started by: jforce
2 Replies

6. Shell Programming and Scripting

Replace string in file with a variable value

Hi Fellows, I am new to shell, please help we me out in this.. i have file which some lines like this.. $$param1='12-jan-2011' $$param2='14-jan-2011' $$param3='30-jan-2011' . . .....so on.. I want to change $$param3 to '31-dec-2011'. i have variable which is storing(30-jan-2011 this... (1 Reply)
Discussion started by: victor369
1 Replies

7. AIX

Replace string with asterisk(*) in variable

I was trying to replace a string ( for eg - @@asterisk@@ to * ) in variable using cat $INFILE | while read LINE do stmt1=`echo $LINE | sed 's/@@asterisk@@/\*/g'` stmt=$stmt' '$stmt1 stmt2=`echo $LINE` STATEMENT=$STATEMENT' '$stmt2 done echo 'Statement with sed -- > '... (5 Replies)
Discussion started by: Vaddadi
5 Replies

8. Shell Programming and Scripting

Using sed to replace a string in file with a string in a variable that contains spaces

Hi, i call my shell like: my_shell "my project name" my script: #!/bin/bash -vx projectname=$1 sed s/'PROJECT_NAME ='/'PROJECT_NAME = '$projectname/ <test_config_doxy >temp cp temp test_config_doxy the following error occurres: sed s/'PROJECT_NAME ... (2 Replies)
Discussion started by: vivelafete
2 Replies

9. Shell Programming and Scripting

Replace variable length numeric string

I have a customer who logged some cc and bank account numbers in their apache logs. I got the cc numbers x'd out with sed -e 's/args=\{16\}/args=XXXXXXXXXXXXXXXX/g' -e 's/cardnum=\{16\}/cardnum=XXXXXXXXXXXXXXXX/g'but that wasn't too difficult due to the value being 16 digits. The bank account... (7 Replies)
Discussion started by: mk4mzid
7 Replies

10. Shell Programming and Scripting

Replace string in a file w/ a variable value

I am trying to replace the default home page for several mac user accounts, I wrote a script that will hunt the files down and replace them with a pre-configured set. The problem I am having is that the download destination path for the browser is hard coded into a .plist (text config file) file... (5 Replies)
Discussion started by: tret
5 Replies
Login or Register to Ask a Question