Пропуск первых n строк при использовании регулярного выражения с sed? - PullRequest
14 голосов
/ 29 июля 2011

В sed можно ли пропустить первые n строк при применении регулярного выражения? В настоящее время я использую следующее:

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

в следующем файле:

Name
John
Albert
Mora
Name
Tommy
Tammy

За один проход я хочу использовать некоторые регулярные выражения (один из которых - удалить строку, содержащую Name, но в этом случае я хочу пропустить первую строку), чтобы получить следующее:

Name
John
Albert
Mora
Tommy
Tammy

Поскольку файл огромен, я не хочу делать несколько проходов, поэтому любые однопроходные подходы были бы хорошими.

1 Ответ

24 голосов
/ 29 июля 2011

Да, вы можете применять команды sed к диапазонам строк с синтаксисом N,M.В этом случае вы хотите что-то вроде этого:

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

Пример с удалением:

sed -e '2,${ /^Name/d }'
...