Help with SED Command

Posted on 2011-03-09
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
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
  • 2
LVL 45

Accepted Solution

Kent Olsen earned 250 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 250 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 45

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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

The purpose of this article is to demonstrate how we can upgrade Python from version 2.7.6 to Python 2.7.10 on the Linux Mint operating system. I am using an Oracle Virtual Box where I have installed Linux Mint operating system version 17.2. Once yo…
Google Drive is extremely cheap offsite storage, and it's even possible to get extra storage for free for two years.  You can use the free account 15GB, and if you have an Android device..when you install Google Drive for the first time it will give…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…

752 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