Skipping the first n lines when using regex with s

2019-03-15 09:07发布

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.

1条回答
手持菜刀,她持情操
2楼-- · 2019-03-15 09:11

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 }'
查看更多
登录 后发表回答