sed can't match '\n' ?!


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers sed can't match '\n' ?!
# 1  
Old 04-08-2010
sed can't match '\n' ?!

Hi:

it seems very strange.

there is a file with multiple lines. After I squeezed out the consecutive blank lines (and some other text processing), somehow the
sed '/\n/! d' file
can not generate any output, as if it can't find any line with newline.

the file is has many lines, so how could this be possible?

Thanks.
# 2  
Old 04-08-2010
Don't understand your post.
Please post.
1) Sample input. In this case displayed in both characters and hexadecimal.
2) Expected output. Displayed in both characters and hexadecimal.


Btw: The "sed" command posted is just a syntax error on my systems.
Hard to guess what it was intended to do.
# 3  
Old 04-09-2010
let's say the file "foo.txt" is:

hohoho
hahaha

the command is

sed '/\n/ d' foo.txt

The output is

hohoho
hahaha

the command is trying to delete all lines with the newline character. so all lines should be filtered out and no output should be generated at all.

But it seems that the sed did not find any match for '\n', which is strange.

There are should not any syntax errors.

Thanks.
# 4  
Old 04-09-2010
you can try
Code:
sed ':a;N;$!ba;s/\n/ /g' file_name

# 5  
Old 04-09-2010
Not strange. Newline is the record terminator in unix text files. sed works on text file format records and the record terminator is not loaded into the pattern space. In sed the end of the record is known as $.

Most of your previous posts have been about "csh" which is rarely used. Are you using csh in this post?

What are you actually trying to do?
# 6  
Old 04-09-2010
Hi Methyl:

Thanks for the answer, very helpful to me to understand the sed better.

I guess I am confused somewhat by the fact that "sed 's%\n%%' fl" seems to work fine. So how come sed can match '\n' in the above "search and replace" structure, but not in a simpler '/\n/ d' structure?

my effort is more towards understanding sed than getting actual imminent work done.

I have to use csh not by my choice. Our EDA environment is setup that way. It actually is tcsh.

Thanks.
# 7  
Old 04-09-2010
sed traditionally deals with data one line at a time and never matches newlines. It's odd that your version of sed ever matches a newline, mine certainly doesn't! If you want to delete newline characters, tr -d '\n' would work better: it deals with bytes, not lines.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Getting out of sed on first NOT match

i have a large file where i want to look for any record that is is larger or smaller than 21 and if it is the case i want to report and break SED .. how can i achieve it ? i dont want sed to scan the complete file after one non match is found. (4 Replies)
Discussion started by: boncuk
4 Replies

2. Shell Programming and Scripting

sed print from last occurrence match until the end of last occurrence match

Hi, i have file file.txt with data like: START 03:11:30 a 03:11:40 b END START 03:13:30 eee 03:13:35 fff END jjjjjjjjjjjjjjjjjjjjj START 03:14:30 eee 03:15:30 fff END ggggggggggg iiiiiiiiiiiiiiiiiiiiiiiii I want the below output START (13 Replies)
Discussion started by: Jyotshna
13 Replies

3. Shell Programming and Scripting

sed match

Hi can anyone help with the following: echo "Date range on 5th May is between -010516 and 050516- please continue "| sed 's/\(.*-\)\(.*-\)\(.*$\)/\2/' output 010516 and 050516- What i need is to include the - to be included. Desired output: -010516 and 050516- I know... (11 Replies)
Discussion started by: andy391791
11 Replies

4. Shell Programming and Scripting

sed match exactly and delete

I am using following sed rule to delete 2 lines after a pattern match inclusive. # cat /tmp/temp.txt dns.com 11 22 mydns.com 11 22 dns.com.au 11 22 LAST LINE # cat /tmp/temp.txt | sed -e '/dns.com/,+2d' LAST LINE I just need to remove lines below dns.com only and NOT below... (5 Replies)
Discussion started by: anil510
5 Replies

5. Shell Programming and Scripting

Exact match using sed

I would like replace all the rows in a file if a row has an exact match to number say 21 in a tab delimited file. I want to delete the row only if it has 21 any of the rows but it should not delecte the row that has 542178 or 563421. I tried this sed '/\<21\>/d' ./inputfile > output.txt ... (7 Replies)
Discussion started by: Kanja
7 Replies

6. Shell Programming and Scripting

Use of sed to find everything after first match!

Hi Guys So far I have got this to work: set x = temp1:temp2:temp3 echo $x | sed 's/.*:\(.*\).*/\1/' Answer: temp3 But I want answer as temp2:temp3, that is everything after the first ":" is found. If anybody can help with a bit of description that will be great. Thanks in Advance (1 Reply)
Discussion started by: dixits
1 Replies

7. Shell Programming and Scripting

Sed Pattern Match

Hi, I would like to use SED to do the following string replacement: asd1abc to www1cda asd2abc to www2cda ... asd9abc to www9cda I can use 'asd.abc' to find the orignal string, however I don't know how to generate the target string. Any suggestion? Thanks, ... (2 Replies)
Discussion started by: mail4mz
2 Replies

8. Shell Programming and Scripting

Multiple line match using sed

Please help! Input pattern, where ... could be any number of lines struct A { Blah1 Blah2 Blah3 ... } B; output pattern struct AB { Blah1 Blah2 Blah3 ... }; I need help in extracting everything between { and } if it would have been on a single line { \(.*\)} should have worked. (15 Replies)
Discussion started by: SiftinDotCom
15 Replies

9. Shell Programming and Scripting

how do I negate a sed match

I have a text file that has links in it. I can write a match for sed to replace the link with anything. For example: http://www.google.com becomes XxX But what I'm after is not to replace the link with something but to remove everything else and just leave the link. I want a... (5 Replies)
Discussion started by: muxman
5 Replies

10. UNIX for Dummies Questions & Answers

How can I match . (actual dot) using sed?

Hi All, How can I match . (actual dot) using sed? Please help. Thanks (9 Replies)
Discussion started by: jingi1234
9 Replies
Login or Register to Ask a Question