Go Premium for a chance to win a PS4. Enter to Win


Help with SED Command

Posted on 2011-03-09
Medium Priority
Last Modified: 2012-08-14
Hello all,
 Ok I don't know if this is against forum rules or not. I am not asking for an answer here, I am simply looking for help getting started. I have this homework question that is as follows:

Using the emp.lst data file generate a list of all the employees formatted as firstname, lastname 19xx where xx it the year of birth from the birth date field. Sort the list in alphabetical order. For maximum credit solve the problem without using the cut command.  

What he wants us to use is the SED command. The file is as follows:

2233:charles harris          :g.m.          :sales           :12/12/52: 90000
9876:bill johnson               :director    :production   :03/12/50:130000
5678:robert dylan              :d.g.m.       :marketing     :04/19/43: 85000
2365:john woodcock         :director    :personnel  :05/11/47:120000
5423:barry wood               :chairman  :admin         :08/30/56:160000
1006:gordon lightfoot         :director    :sales          :09/03/38:140000
6213:michael lennon          :g.m.          :accounts   :06/05/62:105000
1265:p.j. woodhouse        :manager    :sales         :09/12/63: 90000
4290:neil o'bryan               :executive  :production :09/07/50: 65000
2476:jackie wodehouse    :manager     :sales        :05/01/59:110000
6521:derryk o'brien           :director       :marketing :09/26/45:125000
3212:bill wilcocks              :d.g.m.         :accounts  :12/12/55: 85000
3564:ronie trueman           :executive   :personnel :07/06/47: 75000
2345:james wilcox            :g.m.            :marketing  :03/12/45:110000
0110:julie truman               :g.m.             :marketing :12/31/40: 95000

Please help.
Question by:BoxunloX
  • 2
  • 2
LVL 46

Accepted Solution

Kent Olsen earned 1000 total points
ID: 35087282
Hi Box,

If you split the task into smaller tasks, this is pretty "doable".  :)

2233:charles harris          :g.m.          :sales           :12/12/52: 90000

The name is between the first two colons.  Skip/blank the text before the first colon, or extract the text between the first two.

Same thing with the date.  It's between the 4th and 5th colons.  Once the date is found, use the same technique to extract the date from a string where the field delimiter is slash (/) instead of colon (:).

Good Luck,
LVL 48

Assisted Solution

Tintin earned 1000 total points
ID: 35087406
Thank you for being upfront about it being a homework question.  We can certainly assist you, but can't give you the direct answer.

It can certainly be done as a single sed statement (I tried it), although it is relatively complex.

What I did was to use a combination of regular expressions and pattern capturing.

I give you a simple example to help you on your way.

In sed, to capture a pattern, you enclose them in brackets, eg:


You need to escape the brackets with backslashes.

Let's say I wanted to capture the first number in your data, then I could do

sed "s#^\([0-9]*\):.*#Num is \1#" emp.lst

Open in new window

Hope that helps.


Author Comment

ID: 35087924
Thank you kdo. My solution didn't work from the terminal but at least your help got me started and I have something to turn in. It isnt pretty and is most definitely wrong but some points are better than none. We have covered 12 chapters of UNIX in 6 weeks and in my opinion it is just toooooooo damn fast to actually learn any of the material. AWK, SED, PERL, SORT, etc., could all take weeks or months to learn fluently and we get a week for each.......

Thanks again.
LVL 46

Expert Comment

by:Kent Olsen
ID: 35087965
Hi Box,

A lot of these things are wrappers around the same core tools.

While they are completely separate programs, sed is quite simple.  awk is sed on steriods.  Perl is a complete programming language that is awk on mega-steroids.

It all becomes a lot easier if you can learn their common key, that is "regular expressions".  Once you understand them, the tool that's putting them into play becomes easy.

You'll like unix once you get comfortable with it.

Good Luck,

Author Closing Comment

ID: 35087988
Thank you guys. As I stated in my reply to kdo, this class has basically forced UNIX down our throats in a very short period of time. I have been doing sysadmin (on the Windows side) for a few years now and these homework questions just make me feel dumb. Anyway, thanks again and if I make it through this class alive I may think of broadening my UNIX skills on my own time in the future;)

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension (http://www.experts-exchange.com/discussions/210281/Attachments-with-no-extension.html). This reminded me of questions tha…
I have written articles previously comparing SARDU and YUMI.  I also included a couple of lines about Easy2boot (easy2boot.com).  I have now been using, and enjoying easy2boot as my sole multiboot utility for some years and realize that it deserves …
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial
Suggested Courses
Course of the Month8 days, 8 hours left to enroll

877 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question