Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

Hello I have one file with output

Name        : ABC
Name        : CDE
Name        : ZYS

I want to get the result

ABC
CDE
ZYS

How can i get it through SED command.

I have tried. sed s/'Name' but it returns me the output like: ABC

I want to trim the space and also : from the string.

share|improve this question

5 Answers 5

up vote 7 down vote accepted

You can use awk for this:

awk '{print $3}' yourfile

This simply prints the third field/column for every record/row.

share|improve this answer
    
Yes thats correct :) thanks –  Moiz Apr 17 '13 at 6:50

If you use sed:

sed 's/^.*: //' yourfile

or to be a bit more precise:

sed 's/^Name[^:]*: //' yourfile

share|improve this answer
2  
take care, the first one is greedy and eats too much if there's a ': ' in the part right of the first ':'. –  reto Apr 17 '13 at 12:18

With recent GNU grep versions you could do it like this with positive lookbehind:

grep -oP '(?<=: ).*' infile

Or more portably:

grep -o ':.*' infile | grep -o '[^ ]*$'

Output:

ABC
CDE
ZYS
share|improve this answer

To complete the other answers with another way:

cat file | cut -d: -f 2- 

you can cut out the remaining whitespace

cat file | cut -d: -f 2- | cut -c 2-

Or more compact, a bit less readable:

cut -d: -f 2- < file | cut -c 2-
share|improve this answer
1  
No need to use cat here. cut -d: -f 2- file works. –  paraxor Apr 17 '13 at 12:35
    
good point, thamks! –  reto Apr 17 '13 at 12:59

You can use the awk command below:

awk -F ':' '{print $2}' 
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.