Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Skipping the first n lines when using regex with sed?

In sed, is it possible to skip the first n lines when applying a regex? I am currently using the following:

cat test | sed '/^Name/d;/^----------/1;/^(/d;/^$/d'

on the following file:

Name
John
Albert
Mora
Name
Tommy
Tammy

In one pass, I want to use some regexes (one of which is to remove the line containing Name but I want to skip the first line in this case) to obtain the following:

Name
John
Albert
Mora
Tommy
Tammy

Because the file is huge, I don't want to make multiple passes so any one-pass approaches would be great.

like image 727
Legend Avatar asked Jul 29 '11 06:07

Legend


1 Answers

Yes, you can apply sed commands to ranges of lines with the N,M syntax. In this case you want something like this:

sed -e '2,$s/foo/bar/'

An example with delete:

sed -e '2,${ /^Name/d }'
like image 185
a'r Avatar answered Oct 05 '22 11:10

a'r