Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Given a file of humongous size, I can edit with ed, then issue the following command.

g/real/p

Which will print out all lines containing 'real'.

What I want to do is print the first 20.

I know sed, grep, head, etc. But I want to improve my ed skills.

share|improve this question
    
I don't know ed, but | head -n20? – Rob Feb 5 '13 at 18:35
1  
Hi, trying to find solution only using ed. – Bryan Hunt Feb 5 '13 at 18:49

You can specify ranges before your commands in the form from,to.

1,4p

would print lines 1-4.

share|improve this answer

Here's one way:

ed -s infile <<IN
v/PATTERN/d               # delete all lines NOT matching PATTERN
,w !head -n20             # pass the addressed lines as input to shell command
u                         # undo deletion: not needed if you don't save changes
q                         # quit editor
IN
share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .