Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Using sed to remove spaces from middle of the line Post 302904397 by Don Cragun on Wednesday 4th of June 2014 01:45:02 AM
Old 06-04-2014
This could be done with sed by splitting the lines with extra spaces into three lines, deleting the spaces in the 2nd line of each split set, and rejoining the split lines into single lines again. I find awk to be easier to use for operations like this:
Code:
awk '
/<a +href=.* target=/ {
#printf("%din:%s\n", NR, $0)
	l1 = index($0, "<a ") + 2
#printf("Part1:XXX%sXXX\n", substr($0, 1, l1))
	e2 = index($0, " target=")
#printf("Part3:XXX%sXXX\n", substr($0, e2))
	nospc = substr($0, l1 + 1, e2 - l1)
#printf("Part2(before):\n\tXXX%sXXX\n", nospc)
#printf("Part2(after %d spaces removed:\n\tXXX%sXXX\n", gsub(/ /, "", nospc), nospc)
	gsub(/ /, "", nospc)
	printf("%s%s%s\n", substr($0, 1, l1), nospc, substr($0, e2))
	next
}
1' sample.xml

If you want to see how this script splits lines, removes spaces from the middle part, and rejoins lines; remove the octothorp (#) characters in front of the debugging printf() calls. (Once you see how it works, you can remove those lines entirely.)

If you want to try this on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk, /usr/xpg6/bin/awk, or nawk.
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

how to remove spaces in a string using sed.

Hello, I have the following to remove spaces from beginning and end of a string. infile=`echo "$infilename" | sed 's/^ *//;s/ *$//` How do I modify the above code to remove spaces from beginning, end and in the middle of the string also. ex: ... (4 Replies)
Discussion started by: radhika
4 Replies

2. Shell Programming and Scripting

How to 'sed' the middle line?

Hi, If I have 90 lines and I want to print the 45th line, is there a quick sed command for this? thx. (7 Replies)
Discussion started by: g_jumpin
7 Replies

3. Shell Programming and Scripting

remove leading spaces from a line

Hi friends I need some help, I have a file which looks as follows TEMP 014637065 014637065 517502 517502 RTE 517502 517502 RTE AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635 ANOTHER_TEST 12 5433 FTHH 5653 833 TEST 123 123 3235 5353 353 53 35 353 535 3 YTERS GJK JKLS ... (6 Replies)
Discussion started by: lijojoseph
6 Replies

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

5. Shell Programming and Scripting

sed over writes my original file (using sed to remove leading spaces)

Hello and thx for reading this I'm using sed to remove only the leading spaces in a file bash-280R# cat foofile some text some text some text some text some text bash-280R# bash-280R# sed 's/^ *//' foofile > foofile.use bash-280R# cat foofile.use some text some text some text... (6 Replies)
Discussion started by: laser
6 Replies

6. Shell Programming and Scripting

How to remove spaces using awk,sed,perl?

Input: 3456 565 656 878 235 8 4 8787 3 7 35 878 Expected output: 3456 565 656 878 235 8 4 8787 3 7 35 878 How can i do this with awk,sed and perl? (10 Replies)
Discussion started by: cola
10 Replies

7. Shell Programming and Scripting

tr and sed remove spaces. how to stop this?

if the answer is obvious, sorry, I'm new here. anyway, I'm using tr to encrypt with rot-13: echo `cat $script | tr 'a-zA-Z' 'n-za-mN-ZA-M'` > $script it works, but it removes any consecutive spaces so that there is just one space between words. I've had this problem before while using sed to... (5 Replies)
Discussion started by: Trichopterus
5 Replies

8. Shell Programming and Scripting

sed remove newlines and spaces

Hi all, i am getting count from oracle 11g by spooling it to a file. Now there are some newline characters and blank spaces i need to remove these. pl provide me a awk/sed solution. the spooled file is attached. i tried this.. but not getting req o/p (6 Replies)
Discussion started by: rishav
6 Replies

9. Shell Programming and Scripting

How to remove spaces on a line?

Hi, suppose I have the following data: albert music=top40 age=20 bob music=punk rock age=25 candy music=r n b age=22 dave music=mozart or bach only age=30 I want to extract and manipulate the music column but it's got spaces in it. How can I substitute the space with an underscore... (2 Replies)
Discussion started by: almonds
2 Replies

10. Shell Programming and Scripting

Can't remove spaces with sed when calling it from sh -c

The following command works echo "some text with spaces" | sh -c 'sed -e 's/t//g''But this doesn't and should echo "some text with spaces" | sh -c 'sed -e 's/ //g''Any ideas? (3 Replies)
Discussion started by: Tribe
3 Replies
sdiff(1)						      General Commands Manual							  sdiff(1)

NAME
sdiff - Compares two files and displays the differences in a side-by-side format SYNOPSIS
sdiff [-l | -s] [-w number] [-o output_file] file1 file2 The sdiff command reads file1 and file2, uses diff to compare them, and writes the results to standard output in a side-by-side format. OPTIONS
Displays only the left side when lines are identical. Creates a third file, output_file, by a controlled interactive line-by-line merging of file1 and file2. The following subcommands govern the creation of this file: Adds the left side to output_file. Adds the right side to output_file. Stops displaying identical lines. Begins displaying identical lines. Enters ed with the left side, the right side, both sides, or an empty file, respectively. Each time you exit from ed, sdiff writes the resulting edited file to the end of output_file. If you fail to save the changes before exiting, sdiff writes the initial input to output_file. Exits the interactive session. Suppresses display of identical lines. Sets the width of the output line to number (130 characters by default). DESCRIPTION
The sdiff command displays each line of the two files with a series of spaces between them if the lines are identical, a < (left angle bracket) in the field of spaces if the line only exists in file1, a > (right angle bracket) if the line only exists in file2, and a | (ver- tical bar) for lines that are different. When you specify the -o option, sdiff produces a third file by merging file1 and file2 according to your instructions. Note that the sdiff command invokes the diff -b command to compare two input files. The -b option causes the diff command to ignore trail- ing spaces, tab characters, and consider other strings of spaces as equal. EXAMPLES
To print a comparison of two files, enter: sdiff chap1.bak chap1 This displays a side-by-side listing that compares each line of chap1.bak and chap1. To display only the lines that differ, enter: sdiff -s -w 80 chap1.bak chap1 This displays the differences at the tty. The -w 80 sets page width to 80 columns. The -s option tells sdiff not to display lines that are identical in both files. To selectively combine parts of two files, enter: sdiff -s -w 80 -o chap1.combo chap1.bak chap1 This combines chap1.bak and chap1 into a new file called chap1.combo. For each group of differing lines, sdiff asks you which group to keep or whether you want to edit them using ed. SEE ALSO
Commands: diff(1), ed(1) sdiff(1)
All times are GMT -4. The time now is 06:28 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy