How to show certain column of a record using sed
linux, sed
Solution
Update:
echo "5678:robert dylan :d.g.m. :marketing :04/19/43 85000" |
sed 's/:/\n/g' | sed '1d;3d;$d'| sed 'N;s/\n/ - /'
yields
robert dylan - marketing
Explanation:
Works by splitting the line into several lines based on `:`, deleting the first, third and last lines, and then joining them up again.
NOTE: In the last expression, you can specify what separates the name from the designation by putting something else between the final set of `/ /` in `'N;s/\n/ /'`
Previous AWK solution:
Not `sed`, but `awk` is quite a natural tool for this if it is acceptable:
$ echo "5678:robert dylan :d.g.m. :marketing :04/19/43 85000" | awk -F":" '{print $2, $4}'
yields
robert dylan marketing
Alternatively, if your data was stored in a file named `data.txt`:
awk -F":" '{print $2, $4}' data.txt
would produce the same output.
awk is really well suited for these sort of tasks.
Explanation:
awk -F":" '{print $2, $4}'
`-F` sets the field separator to `:`, `print $2, $4` print resulting fields 2 and 4 respectively. You can use `printf` to format the output as specific as you need.
Problem
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?