Visit Our UNIX and Linux User Community


Removing extra unwanted spaces


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Removing extra unwanted spaces
# 8  
Old 08-22-2012
Quote:
Originally Posted by alister
Both behaviors may very well be correct.
True. Re-reading the thread-O/Ps goal description i have to admit it is not at all clear what he really wants and i might have misunderstood him.


Quote:
Originally Posted by alister
Both behaviors may very well be correct.
For sed, I would suggest the following, which is resilient to trailing spaces in the first field:
Code:
sed 's/ *|/|/2'

[/quote]

hmm, it will change the second instance of trailing blanks in any field, not the trailing blanks in the second field, no?

I suggest the following, revised regexp, which will only change trailing blanks and only so in the second field:

Code:
sed 's/^\([^|]*|[^<spc><tab>]\)[<spc><tab>]*|/\1|/' /path/to/input

Arguably one of the most fire-proof regexps i have ever written. ;-))

bakunin
# 9  
Old 08-22-2012
Quote:
Originally Posted by alister
For sed, I would suggest the following, which is resilient to trailing spaces in the first field:
Code:
sed 's/ *|/|/2'

Quote:
Originally Posted by bakunin
hmm, it will change the second instance of trailing blanks in any field, not the trailing blanks in the second field, no?
No. It will remove trailing spaces (if present) only in the second field. The first field will always match, since the spaces are optional (there is only one space in my regular expression). The second match will always be the second field.


Quote:
Originally Posted by bakunin
I suggest the following, revised regexp, which will only change trailing blanks and only so in the second field:

Code:
sed 's/^\([^|]*|[^<spc><tab>]\)[<spc><tab>]*|/\1|/' /path/to/input

Arguably one of the most fire-proof regexps i have ever written. ;-))
I believe you omitted a * quantifier, otherwise your re will only match a second field with a single non-blank followed by blanks. But including the * could lead to a problem with greediness spilling over into subsequent fields if the second field has no blanks. The first [^<spc><tab>] should be [^|]. Regardless, it will fail to remove trailing blanks if there is an embedded blank.

If trailing spaces in the second field need to be deleted, I believe my suggestion is both accurate and robust.

Regards,
Alister

Last edited by alister; 08-22-2012 at 07:31 PM.. Reason: changed blank to space for precision
These 2 Users Gave Thanks to alister For This Post:
# 10  
Old 08-23-2012
Quote:
Originally Posted by alister
If trailing spaces in the second field need to be deleted, I believe my suggestion is both accurate and robust.
You know what? You are right. Upon taking a nights sleep and a fresh look i come to the conclusion your solution is more robust than mine.

Most of my colleagues start having something else to do when i say "sed", so i enjoy to be able to discuss regexps for a change.

bakunin
This User Gave Thanks to bakunin For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #218
Difficulty: Easy
A peer-to-peer network sets all connected computers equal and all connected computers share the same abilities to use resources available on the network.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Grep string causes extra spaces

Hello, I have an xml file and my aim is to grab each line in keywords file and search the string in another file. When keyword is found in xml file,I expect the script to go to previous line in the xml file and grab the string/value between two strings. It's almost working with an error. tab... (6 Replies)
Discussion started by: baris35
6 Replies

2. UNIX for Beginners Questions & Answers

Removing unwanted symbols with sed

I would like produce blue, green, red, yellowfrom"blue:,*green:,*red:,*yellowI can remove the colon with echo "blue:,*green:,*red:,*yellow" | sed 's/://g'which givesblue,*green,*red,*yellowbut when I try echo "blue:,*green:,*red:,*yellow" | sed 's/://g'; 's/*//g'I get bash: s/*//g: No such... (9 Replies)
Discussion started by: Xubuntu56
9 Replies

3. Shell Programming and Scripting

Removing extra unwanted spaces

hi, i need to remove the extra spaces in the filed. Sample: abc~bd ~bkd123 .. 1space abc~badf ~bakdsf123 .. 2space abc~bqed ~bakuowe .. 3space output: abc~bd ~bkd123 .. 1space abc~badf~bakdsf123 .. 2space abc~bqed~bakuowe .. 3space i used the following command, (2 Replies)
Discussion started by: anshaa
2 Replies

4. Shell Programming and Scripting

Removing unwanted tags from xml file

I have a XML file given as below: "<ProductUOMAlternativeDetails> <removetag> <UOMCode>EA</UOMCode> <numeratorForConversionToBaseUOM>1</numeratorForConversionToBaseUOM> <denominatorForConversionToBaseUOM>1</denominatorForConversionToBaseUOM> <length>0.59</length> <width>0.96</width> ... (3 Replies)
Discussion started by: vikingh
3 Replies

5. Shell Programming and Scripting

removing unwanted characters from a file

i have a file like this 1111_2222#$#$dudgfdk 11111111_343434#$#$334 1111_22222#43445667 i want to remove all those charachetrs from # how can i do this Thank in advance Saravanan (4 Replies)
Discussion started by: saravanan71184
4 Replies

6. Shell Programming and Scripting

Removing blank spaces, tab spaces from file

Hello All, I am trying to remove all tabspaces and all blankspaces from my file using sed & awk, but not getting proper code. Please help me out. My file is like this (<b> means one blank space, <t> means one tab space)- $ cat file NARESH<b><b><b>KUMAR<t><t>PRADHAN... (3 Replies)
Discussion started by: NARESH1302
3 Replies

7. Shell Programming and Scripting

How to remove extra spaces from a string??

Hi, I have a string like this and i want to remove extra spaces that exists between the words. Here is the sentence. $string="The small DNA genome of hepadnaviruses is replicated by reverse transcription via an RNA intermediate. This RNA "pregenome" contains ... (2 Replies)
Discussion started by: vanitham
2 Replies

8. Shell Programming and Scripting

remove extra spaces between fields

Hi, I have a source file as mentioned below: I want to remove all the extra spaces between the fields. a b--------|sa df-------|3232---|3 sf sa------|afs sdf-----|43-----|33 a b c------|adfsa dsf---|23-32|23 *Here '-' idicates spaces Now, I want output as below: a b|sa df|3232|3... (7 Replies)
Discussion started by: srilaxmi
7 Replies

9. Shell Programming and Scripting

Remove extra spaces in a line

Hi, I need a help in deleting extra spaces in a text. I have a huge file, a part of it is :- 3 09/21/08 03:32:07 started undef mino Oracle nmx004.wwdc.numonyx.com Message Text : The Oracle session with the PID 1103 has a CPU time ... (6 Replies)
Discussion started by: vikas027
6 Replies

10. UNIX for Dummies Questions & Answers

To remove the extra spaces in unix

Hi... I am quite new to Unix and would like an issue to be resolved. I have a file in the format below; 4,Reclaim,ECXTEST02,abc123,Harry Potter,5432 6730 0327 5469,0603,,MC,,1200,EUR,sho-001,,1,,,abc123,1223 I would like my output to be as follows; 4,Reclaim,ECXTEST02,abc123,Harry... (4 Replies)
Discussion started by: Sho
4 Replies

Featured Tech Videos