sed one-liner 删除任何以数字开头的行

ixt*_*lix 3 sed regular-expression

在此处输入图片说明

假装我正在处理这个文件。

第一个可见行的开头被遮住了,所以忽略它。43 是下一行的开始,该行将被删除。

下一行(以 44 开始并以句点结束)将被删除。

下一行(仅由 424 组成)也消失了。

下一行(由“11.King and Hero”组成)也没有了。

下一行保留。

cam*_*amh 10

我会用grep(1)这个:

grep -v '^[0-9]' filename
Run Code Online (Sandbox Code Playgroud)

^[0-9]匹配任何以数字开头-v的行,并排除匹配的行,而不是包括。您还可以使用字符类[:digit:]代替[0-9].

而不是-v你可以反转范围:

grep '^[^0-9]' filename
Run Code Online (Sandbox Code Playgroud)

这将匹配任何不以数字开头的行,但不会匹配空行。

对于grep,sedawk,我的一般规则是,对于匹配和简单提取,使用grep,无状态重写,使用sed和有状态修改,使用awk. 这就是为什么我建议使用grep而不是sed您在问题中提出的问题(其他人已经回答了sed)。


Mik*_*kel 9

sed -e '/^[0-9]/d' filename > filename.new
Run Code Online (Sandbox Code Playgroud)

或就地修改

sed -i -e '/^[0-9]/d' filename
Run Code Online (Sandbox Code Playgroud)