sed awk question


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed awk question
# 1  
Old 08-12-2009
sed awk question

I have a string that I need to remove data that is not within <>. For example:
Code:
this is a <test> of removing <text> outside brackets

output should be:
Code:
<test> <text>

or:
Code:
test text

I can use either of the two outputs but so far I have not had much luck removing all of the other text. The closest I have gotten is with he following awk command:

Code:
awk 'BEGIN{RS="<";FS="> "}{print $1}' filename

this outputs the following:

Code:
this is a
test
text


I can not get rid of the beggining of the line and the output is showing up on multiple lines which will not work as I am trying to assign the output to a single string variable.

I also tried the following awk:

Code:
awk -F'<|>' '{print $2}' filename


this outputs the following:
Code:
test

better but I am missing the second field.

When using sed I can remove all the text inside the <>
Code:
sed 's/<[^>]*>//g'

but not the reverse.

I think I am close but can not get it. Any help would be appreciated.

Last edited by chewbacca72; 08-12-2009 at 03:01 PM..
# 2  
Old 08-12-2009
you only want the result in one line?
for this porpuse try this:

$more file
<test> <text>
$awk 'BEGIN{RS="<";FS=">"}{printf $1" " } END {printf "\n"} ' file
test text
# 3  
Old 08-12-2009
There is probably an easier way then doing 2 sed commands, but this works:

Code:
echo "<test> <text>" | sed 's/<//g' | sed 's/>//g'

Output:
Code:
test text

Padow
# 4  
Old 08-12-2009
chipcmc,

your update fixes my problem of having the output on a signle line but I still have the beggining of the line to deal with:

Code:
awk 'BEGIN{RS="<";FS=">"}{printf $1" " } END {printf "\n"} ' filename

output

Code:
this is a  test text


Padow,

You sed commands will only remove the <> from the string:

Code:
 cat filename | sed 's/<//g' | sed 's/>//g'

output

Code:
this is a test of removing text outside brackets


Last edited by vgersh99; 08-12-2009 at 02:31 PM.. Reason: code tags, PLEASE!
# 5  
Old 08-12-2009
To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags [code] and [/code] by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums
# 6  
Old 08-12-2009
vgersh99,

I updated my inital post to follow the correct format.

Thanks
# 7  
Old 08-12-2009
What makes this difficult is having multiple occurrences of the bracketed fields per line. This rules out cut and makes awk very difficult to use. I'm sure some shell super-guru can accomplish this in a shell script, but it may be easier just to step this one up to perl or python.
Padow
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

yet another sed/awk question

Unix Guru's , I have a file all_files.txt containing data as follows all_files.txt first file : /a/b/c/file.sh first second CLIENT1 second file : /a/b/c/file.sh first second CLIENT1 first file : /a/b/c/file.sh first second CLIENT2 second file : /a/b/c/file.sh first second... (6 Replies)
Discussion started by: jville
6 Replies

2. Shell Programming and Scripting

awk question (or sed, if that's better to use)

Hi all, I'm pretty new to Unix (Sun) scripting, and wanted to try doing what many would probably believe is pretty easy. I tried searching the forums and only found bits and pieces of things I wanted to do below, but after many tries had a very hard time piecing it together. Would anyone... (1 Reply)
Discussion started by: chatguy
1 Replies

3. Shell Programming and Scripting

sed or awk question

Hello expert, I have an output file with few thousand lines similar like below : &quot;Future Netmgmt&quot; &quot;10.99.16.0&quot; &quot;N&quot; &quot;10&quot; &quot;10.0.0.0&quot; &quot;Circuitless-IP&quot; &quot; &quot; &quot;255.255.254.0&quot; &quot;Future Netmgmt&quot; &quot;10.99.18.0&quot; &quot;N&quot; &quot;10&quot; &quot;10.0.0.0&quot; &quot;Circuitless-IP&quot; &quot; &quot; &quot;255.255.254.0&quot; &quot;WAAS loopbacks&quot; &quot;10.99.20.0&quot;... (6 Replies)
Discussion started by: dannytrinh
6 Replies

4. UNIX for Dummies Questions & Answers

sed or awk question

hi there! i have a question that i hope someone may be able to help me with. i am using the 'paste' function to concatenate to files together. $ paste A B output: A B C D However I want to get rid of the space in between - I have tried the following with no luck: #... (2 Replies)
Discussion started by: thegant
2 Replies

5. UNIX for Dummies Questions & Answers

sed and awk question

Hi, I have to write a script that goes through every *.cpp file in the current directory and if any file has #includes of non-system header files (those with double quotes around them), then I need to print out those header files within the quotes. I've figured out how to run a for loop and find... (4 Replies)
Discussion started by: MEllis5
4 Replies

6. Shell Programming and Scripting

to sed or awk, that is the question?

I have a text file with about 790 lines, at the end of many of the lines there is the text string 'f4' I want this text to be 'f2' What is the best way to do this? is it sed or awk? or something else? how? Also, there is maybe fifty occasions where f4 appears near the begining of the line that I... (2 Replies)
Discussion started by: ajp7701
2 Replies

7. Shell Programming and Scripting

sed and awk question

hello, I have this in a file server_name=DB1 hostname=db1 I want to change hostname value to `hostname`. Any idea? and server_name value to toUPPER (`hostname`). Any idea? thanks (3 Replies)
Discussion started by: melanie_pfefer
3 Replies

8. UNIX for Advanced & Expert Users

A question on using sed or awk

Hi I have a pattern like this. repeating many lines CHANGE #13 TYP:22 CLS: 21 AFN:12 DBA:0x0040a15f OBJ:41142 SCN:0x0000.00036b3e SEQ:1 OP:11.2 CHANGE #15 TYP:32 CLS: 32 AFN:212 DBA:0x0040a15f OBJ:41143 SCN:0x0000.00046b3e SEQ:1 OP:13.3 . And i am trying to do the following: a) I need to get... (2 Replies)
Discussion started by: hare
2 Replies

9. Shell Programming and Scripting

Awk Sed question

i have to search direcotry with a Min or Max size and but with a standard find.... it gives me the size of the i-node of the directory. A friend told me to use awk/sed command to search directories. he also gave me this command: find -type d -exec du '{}' \; | awk -v sz=10 '{if... (0 Replies)
Discussion started by: AkiraSama
0 Replies

10. Shell Programming and Scripting

Sed or Awk Question

I have some text: 0400-0427 NA Czech Republic R. Prague 5990ca, 6200, 7345 0400-0456 NA, As Romania R. Romania Int'l 6115, 9515, 9690, 11895 0400-0500 NA U. S. A. WYFR 6065, 6855, 9505, 9715 0400-0500 NA,Eu,Af U. S. A. ... (8 Replies)
Discussion started by: petebear
8 Replies
Login or Register to Ask a Question