sed: removing any and all trailing digits?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed: removing any and all trailing digits?
# 1  
Old 03-06-2009
sed: removing any and all trailing digits?

We have a large number of oracle database related scripts that utilize the environment variables $ORACLE_SID and $DBNAME. In a single instance database the $ORACLE_SID is the same as the database name $DBNAME. So we have simply set DBNAME = $ORACLE_SID. However, now that we are clustering with RAC, we have multiple $ORACLE_SID variables for each $DBNAME. Which means that DBNAME != $ORACLE_SID. An oracle provided script (oraenv) sets up most the environment automatically but does not set up $DBNAME.

Luckily, the $ORACLE_SID variables are just the $DBNAME with the node number added to the end. E.g. $DBNAME=ORCL $ORACLE_SID=ORCL1

What I need is a way to remove any and all digits from the end of the $ORACLE_SID variable. It should leave any digits that are at the beginning or middle of the $ORACLE_SID.

End result:
Code:
$ORACLE_SID     $DBNAME
ORCL                ORCL
ORCL1              ORCL
ORCL23             ORCL
4ORCL              4ORCL
4ORCL3            4ORCL
OR4CL              OR4CL

Thanks in advance!
# 2  
Old 03-06-2009
If you have this in your file:
Code:
ORCL                ORCL
ORCL1              ORCL
ORCL23             ORCL
4ORCL              4ORCL
4ORCL3            4ORCL
OR4CL              OR4CL

Code:
sed 's/[0-9]\+ //' file

should return this:

Code:
ORCL                ORCL
ORCL             ORCL
ORCL            ORCL
884ORCL              4ORCL
4ORCL           4ORCL
OR4CL              OR4CL

# 3  
Old 03-06-2009
Try this :

Code:
$ DBNAME=`echo $ORACLE_SID | sed -e "s/[0-9]*$//"`

# 4  
Old 03-07-2009
sed -e "s/[0-9]*$//" works perfectly.

what does the "*$" actually mean?

Thanks!
# 5  
Old 03-07-2009
You should read it more like this

[0-9]* means any occurence of numbers
$ means from the end

So [0-9]*$ means any occurence of numbers from the end (in other words any trailing numbers)
# 6  
Old 03-09-2009
Ahhh, so it works back from the end until it hits a non-number character.

Brilliant, thanks!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed / awk script to delete the two digits from first 3 digits

Hi All , I am having an input file as stated below 5728 U_TOP_LOGIC/U_CM0P/core/u_cortexm0plus/u_top/u_sys/u_core/r03_q_reg_20_/Q 011 611 U_TOP_LOGIC/U_CM0P/core/u_cortexm0plus/u_top/u_sys/u_core/r04_q_reg_20_/Q 011 3486... (4 Replies)
Discussion started by: kshitij
4 Replies

2. Shell Programming and Scripting

Removing Trailing Line

I have been trying to remove empty lines and lines just filled with spaces. I have used the following command which does work. sed -i "/^\s*$/d" Except it leaves one single trailing line at the very end of the file. For the life of me I cant figure out why I cant remove that last trailing... (2 Replies)
Discussion started by: user8282892
2 Replies

3. UNIX for Dummies Questions & Answers

Removing trailing x'0A' characters.

I am trying to remove trailing carriage return (x'0a') from a source program. What is a good way to do this for the whole file? TIA (4 Replies)
Discussion started by: wbport
4 Replies

4. UNIX for Dummies Questions & Answers

Removing trailing characters

I have been given a shell script that I need to amend. To do the following extract the filename from the flag file by removing the .flag extension. # Local variables # Find if the flag files exists MASK=coda_mil2*.flag # Are there any files? bookmark="40" fileFound=0 ls -1... (3 Replies)
Discussion started by: andymay
3 Replies

5. Shell Programming and Scripting

Removing just the trailing commas :-(

Hi all, I haven't needed to do any shell based editing for nearly 20 years, and no amount of searching around has found me a solution to this very simple problem :-( I have a csv file. Some lines have three commas at the end. This means the invoice hasn't been paid. I'd like to use sed / grep... (4 Replies)
Discussion started by: chardyzulu
4 Replies

6. UNIX for Dummies Questions & Answers

Removing the trailing date from a filename

Hi I have 3 files (say) in a folder as in the example below abc_01012011.csv def_01012011.csv xyz_01012011.csv I need to move these files to a different folder as follows abc.csv def.csv xyz.csv I am trying to put together a script with a for loop which reads the source filenames... (5 Replies)
Discussion started by: bobsn
5 Replies

7. Shell Programming and Scripting

Removing trailing zeros using sed

Hello All, I have a csv file with 3 columns. The file which looks like this 47850000,100,233 23560000,10000,456 78650000,560000,54 34000000,3456,3 The first column has 4 trailing zeros. I have to remove 4 trailing zeroes from 1st field. The output file should appear as follows. ... (12 Replies)
Discussion started by: grajp002
12 Replies

8. Shell Programming and Scripting

Removing trailing zeroes

So, I can't figure out how to do a previous question with printf, so I'm taking a different approach. Suppose I have a set of numbers: 1200,135.000000,12.30100,3212.3200,1.759403,,1230,101.101010,100.000000 I want to remove all trailing zeroes after the decimal, and, if it ends up orphaned,... (8 Replies)
Discussion started by: treesloth
8 Replies

9. Shell Programming and Scripting

Removing trailing spaces from delimited files

Hi All I have a file of the following format (delimited by |) this is field 1 | field 2 (lots of blank spaces) | field 3 (lots of blank space) | field 1 | more text (lots of blank spaces) | dhjdsk | Is there a way I can remove... (6 Replies)
Discussion started by: djkane
6 Replies

10. Shell Programming and Scripting

re: removing trailing space from lines

Not sure why this thread was closed without any explanation, but you can do what you're asking with sed 's/]*$//g' < sourceFile > destFile (1 Reply)
Discussion started by: oombera
1 Replies
Login or Register to Ask a Question