Sed $ appending to front, not to the end


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Sed $ appending to front, not to the end
# 1  
Sed $ appending to front, not to the end

I keep trying to append some astrix to the end of a line, but it keeps overwriting at the front of the line.

These are the originals

Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900

Here's the output

Code:
***d Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
***d Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900

It's supposed to look like this
Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900***
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900***

My code looks like this
Code:
sed '/^Fred/s/$/***/' inputfile

Does that make any sense at all? Is there any situation where it would do that?

---------- Post updated at 11:59 PM ---------- Previous update was at 09:49 PM ----------

If you think it should work, please tell me, so that maybe I can go about installing a different version of sed.

---------- Post updated 04-28-10 at 01:05 AM ---------- Previous update was 04-27-10 at 11:59 PM ----------

Figured it out.

apparently sed needs a . before the $
the proper code looks like this

Code:
sed '/^Fred/s/.$/***/' inputfile

# 2  
Works for me...
Code:
cat > i
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900
sed '/^Fred/s/$/***/' i
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900***
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900***

# 3  
try in awk
Code:
awk '{print $0 "***" }' your_file

# 4  
I suspect your input file is in DOS format. This means that at the end of the line there are two characters: 'carriage return (CR)' and 'linefeed (LF)'. With your sed statement you are only replacing the LF by '***' plus a new LF. so your sentence becomes:
Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780CR***LF

Which get printed as:
Code:
***d Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900

This is why
Code:
sed '/^Fred/s/.$/***/' inputfile

does indeed work because then you delete the CR (the "." takes care of it) , so your sentence becomes:
Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780***LF

So I think you should convert the file to unix format first and then the original sed statement should work.

Last edited by Scrutinizer; 04-28-2010 at 06:23 AM..
# 5  
sed -n '/^Fred/s/$/***/p' 1
# 6  
Quote:
Originally Posted by Scrutinizer
I suspect your input file is in DOS format. This means that at the end of the line there are two characters: 'carriage return (CR)' and 'linefeed (LF)'. With your sed statement you are only replacing the LF by '***' plus a new LF. so your sentence becomes:
Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780CR***LF

Which get printed as:
Code:
***d Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780900

This is why
Code:
sed '/^Fred/s/.$/***/' inputfile

does indeed work because then you delete the CR (the "." takes care of it) , so your sentence becomes:
Code:
Fred Fardbarkle:674-843-1385:20 Parak Lane, Duluth, MN 23850:4/12/23:780***LF

So I think you should convert the file to unix format first and then the original sed statement should work.
Right on the money. That was exactly the problem. I simply copied the contents of the file, created a new one in emacs and pasted it in there, and then renamed it to the original. Then all of a sudden it started to work. Thanks.

There are things you know, and things you know you don't know, and then there's things you don't know you don't know. That was something I didn't know I didn't know. God that was frustrating. To know your code is correct, but then it doesn't work is probably one of the worst part of this profession.

Last edited by DrSammyD; 04-28-2010 at 05:32 PM..
 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #335
Difficulty: Easy
Linus Torrent is the creator of the Linux kernel, which went on to be used in Linux, Android, and Chrome OS.
True or False?

8 More Discussions You Might Find Interesting

1. Programming

Publish notification via application front end

hi All I use tomcat server to publish war file. How to send an notification to users via the application screen and it should dismiss once user clicks X mark. Any suggestions ? (0 Replies)
Discussion started by: anil529
0 Replies

2. UNIX for Dummies Questions & Answers

Stripping double quotes from front and end of a line

I have a file and some records may contain double quotes at beginning and at end of line. So how do I strip them? For Example, file is somethings like this Field1;Field2;Field3 01;'Test';'Test Field3' "01;'This is 2nd field';This is 3rd field' " Desired Output is: ... (6 Replies)
Discussion started by: vx04
6 Replies

3. UNIX for Dummies Questions & Answers

Appending columns at the end of output using awk/sed

Hi , I have the below ouput, =====gopi===== assasassaa adsadsadsdsada asdsadsadasdsa sadasdsadsd =====kannan=== asdasdasd sadasddsaasd adasdd =====hbk=== asasasssa .... .. I want the output like as below, not able paste here correctly. (2 Replies)
Discussion started by: eeegopikannan
2 Replies

4. UNIX for Dummies Questions & Answers

Communicate to the OS(linux) using front end.

Hi guys , I want to develop a web page which is capable of executing the command on os and show the output on the browser.(Which involves reading and writing too.) I m using jsp language to develop the web page. How would i use it to communicate with my linux server? Any... (3 Replies)
Discussion started by: pinga123
3 Replies

5. Shell Programming and Scripting

Appending the last few columns to the front

Hi consider this as the first line 00010015 MORGAN STANLEY & CO INCORPORATED N 110 INVESTAR 1 0001OT NJ 201-830-5055 01-Jan-1974 00:00:00 1 01-May-2008 00:00:00 05-Jun-2008 13:34:18 0001 - From SMSRun1_GIDQA02 Consider this as the second line 00010015 MORGAN STANLEY... (3 Replies)
Discussion started by: ragavhere
3 Replies

6. Shell Programming and Scripting

remove space in front or end of each field

Hi, I have a txt file called a.txt which contain over 10,000 records and I would like to remove space before comma or after comma....like below: The input (for example two record 00001,00002): 00001,client,card limited ,02292,N ,162:41 , 192, ... (6 Replies)
Discussion started by: happyv
6 Replies

7. Programming

Running exe's from front end

Hi, I have created a tool which analyses and debugs cobol programs on Unix environment usin the C files. I now want to create a frontend for the tool in windows. For this i need to establish some kinda communication between the front the end and the back end. I know pipes in one way of... (0 Replies)
Discussion started by: Sinbad
0 Replies

8. UNIX for Advanced & Expert Users

Front end on Unix

Hi, I would like to develop a user interface on Solaris. Can anybody throw some light on currently available software utilities/ packages..? Thanks in Advance .. JS (4 Replies)
Discussion started by: shibz
4 Replies

Featured Tech Videos