Question: I have a list like this:

```
5678:robert dylan   :d.g.m. :marketing  :04/19/43 85000

```

I want to show only the name and designation of the person. I want to use `sed` for that. How should I do that?

Answer: 
Just thought I'd drop in the solution using `cut`

```
 cut -d ":" -f 2,4

```

produces: 

```
 robert dylan :marketing

```
This might work for you:

```
echo "5678:robert dylan :d.g.m. :marketing :04/19/43 85000" |
sed 's/[^:]*:\([^:]*:\)[^:]*:\([^:]*\):.*/\1\2/'
robert dylan :marketing

```

Explanation:

The left hand side (LHS) of the substitute command says:

* `[^:]*:` match zero or more non `:`'s followed by a `:` - this matches `5678:`
* `\([^:]*:\)` as above but will be remembered as a back reference `\1` - matches `robert dylan :`
* `[^:]*:` as above but no back reference - matches `d.g.m. :`
* `\([^:]*\)` as above (excepting the `:` but will be remembered as a back reference `\2` - matches `marketing`
* `:.*` a `:` followed by everything else - matches `:04/19/43 85000`

The right hand side of the substitute command says:

* `\1\2` replace the left hand side by the first and second back references.