Ignore dollar value in sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Ignore dollar value in sed
# 1  
Old 09-14-2019
Ignore dollar value in sed

Hi Guys,

I need to replace the string based on specific value by keeping dollar sign
Code:
input=$1
var=$(echo "@code_temp_table_$value_table"| sed -r "s/\@code/${input}/;s/(nz|sa)_\$value_/\$value1_\1_/" )

Expected
Code:
if
input=nz,sa
then
nz_temp_table_$value1_table
else
if any other input for eg input=us
us_temp_table_$value_table

# 2  
Old 09-14-2019
Hi, try:

Code:
echo '@code_temp_table_$value_table'| sed -r "s/\@code/${input}/; /^(nz|sa)_/s/\\\$value_/\$value1_/"

Within double quotes, you need to escape both the \ and the $ character, to protect them from the shell, so that sed "sees" \$ in the regex part of the s command.

Also, you need single quotes for the echo statement, or escape the $ sign :
Code:
echo "@code_temp_table_\$value_table"


Last edited by Scrutinizer; 09-14-2019 at 12:24 PM..
# 3  
Old 09-14-2019
I am getting below error

Code:
bash-3.2$ echo $input
nz
bash-3.2$ echo '@code_temp_table_$value_table'| sed -r "s/\@code/${input}/; /^(nz|sa)_/s/\\\$value_/\$value1_/"
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
       sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
bash-3.2$

# 4  
Old 09-14-2019
Hello Rohit, the -r option as specified by the OP is GNU sed, regular sed can not do alternation ( nz|sa )

With BSD sed (like on MacOS) you can try sed -E
# 5  
Old 09-14-2019
Try \| for the alternation ... but don't forget to escape the parentheses as well.


EDIT: Hoppla - that seems to be GNU as well ...

Last edited by RudiC; 09-14-2019 at 02:01 PM..
# 6  
Old 09-15-2019
Indeed \| is a GNU extension to Basic Regular Expressions ( BRE ), as are \? and \+. But I do not see a use for them, since GNU utilities also support at least Extended Regular Expressions (ERE) which supports | ? and +, with the -E option for GNU grep (as with any grep) and the -r option for sed.

Standard sed uses BRE and does not understand ERE, nor the GNU extensions to BRE.
BSD sed has a -E option for ERE, but does not understand the GNU extensions to BRE
Any standard grep does support -E for ERE, but not the GNU extensions to BRE.

The drawback of ERE is that officially it does not support back reference, but the GNU and BSD versions do.

Last edited by Scrutinizer; 09-15-2019 at 04:30 AM..
These 2 Users Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Ignore escape sequence in sed

Friends, In the file i am having more then 100 lines like, File1 had the values like this: #Example East.server_01=EAST.SERVER_01 East.server_01=EAST.SERVER_01 West.server_01=WEST.SERVER_01 File2 had the values like this: #Example EAST.SERVER_01=http://yahoo.com... (3 Replies)
Discussion started by: jothi basu
3 Replies

2. Shell Programming and Scripting

Sed, replace comma with pipe. but ignore qoutes

hi, I am trying to replace comma with pipe, but the issue is that i want to ignore the commas inside qoutes. for example: i have file with the string: 1,"2,3",4,"5","6,7" the result should be : 1|"2,3"|4|"5"|"6,7" i trying to use sed and awk (match function) for that, but i did not... (4 Replies)
Discussion started by: gabik
4 Replies

3. Shell Programming and Scripting

Ignore first word using sed in PERL

Please help me in ignoring first word in a line example Input log 123^Babd^Basdf789^B098^Bouiou Desired output abd,asdf789,098,ouiou 123 should be ignored is this possible using sed regular expressions Use code tags - you got a PM with a guide. (2 Replies)
Discussion started by: thankful123
2 Replies

4. Shell Programming and Scripting

problem in dollar substitution

Hi, I have a problem in dollar substitution:- $ csv1="first_csv" $ csvnumber=1 $ echo {csv$csvnumber} {csv1} $ echo "${csv$csvnumber}" bad substitution I want first_csv...why is it not working thanks (2 Replies)
Discussion started by: scripter12
2 Replies

5. Shell Programming and Scripting

how to escape dollar in unixcommand

i have my @tmp = `egrep 'jpg$|gif$' output.txt`; perl assumes $ as a variable; i tried escaping but failed please help me (5 Replies)
Discussion started by: phoenix_nebula
5 Replies

6. UNIX for Dummies Questions & Answers

Using 'sed' to delete or ignore columns in a dataset

Hi, I want to know if its possible to delete or ignore columns in a large dataset using 'sed'. For example, I have the following dataset: - 20060714,X.XX,1,043004,Q,T,24.0000,1,25.5000,4, 20060714,X.XX,1,081209,Q,T,24.0000,1,25.5000,5, As you can see, there are 10 columns here and the... (4 Replies)
Discussion started by: aarif
4 Replies

7. UNIX for Dummies Questions & Answers

Using 'sed' to delete or ignore columns in a dataset

Hi, I've already posted elsewhere but am posting again here coz im a newbie. I hope you forgive me this time. I want to know if its possible to delete or ignore columns in a large dataset using 'sed'. For example, I have the following dataset: - ... (0 Replies)
Discussion started by: aarif
0 Replies

8. Shell Programming and Scripting

Sum Dollar Amounts

I get a transaction file and I need to sum two of the columns. I each record I get a debit(D) or credit(C) indicator. Then I get an amount field. I need to sum the total dollar value of debits and credits. I know I can loop through each record and get the sum total but is there a better way with... (7 Replies)
Discussion started by: lesstjm
7 Replies

9. Shell Programming and Scripting

Make sed ignore lines

Hi I use sed in a script for severall changes in files. I whish one of the substitutions I made to be aplied to every line that has the word "scripts" with the exception for the ones that start with "rsh", wich I wish sed to ignore . Is this possible? If yes, how can I do it? The substitution... (2 Replies)
Discussion started by: Scarlos
2 Replies
Login or Register to Ask a Question