使用带有sed的正则表达式时跳过前n行?

Leg*_*end 14 unix command-line text sed

sed应用正则表达式时,是否可以跳过前n行?我目前正在使用以下内容:

cat test | sed '/^Name/d;/^----------/1;/^(/d;/^$/d'
Run Code Online (Sandbox Code Playgroud)

在以下文件中:

Name
John
Albert
Mora
Name
Tommy
Tammy
Run Code Online (Sandbox Code Playgroud)

在一个过程中,我想使用一些正则表达式(其中一个是删除包含Name但我想在这种情况下跳过第一行的行)以获得以下内容:

Name
John
Albert
Mora
Tommy
Tammy
Run Code Online (Sandbox Code Playgroud)

因为文件很大,我不想进行多次传递,所以任何一次通过的方法都会很棒.

a'r*_*a'r 24

是的,您可以使用N,M语法将sed命令应用于行范围.在这种情况下,你想要这样的东西:

sed -e '2,$s/foo/bar/'
Run Code Online (Sandbox Code Playgroud)

删除示例:

sed -e '2,${ /^Name/d }'
Run Code Online (Sandbox Code Playgroud)

  • '2,$' 表示从第 2 行到文件末尾。$ 后面的项是一个操作。对于这些示例,可以使用 `s/search/replace` 或 `{ /^string-to-delete/d }` (2认同)