假设我正在处理这个文件。
第一个可见行的开头被遮挡,因此请忽略它。 43 是下一行的开始,该行将被删除。
下一行(以 44 开头并以句点结尾)将被删除。
下一行(仅由 424 组成)也消失了。
下一行(由“11.国王和英雄”组成)也消失了。
下一行保留。
答案1
我会用grep(1)
这个:
grep -v '^[0-9]' filename
^[0-9]
匹配以数字开头的任何行,并-v
排除匹配的行,而不是包含。您还可以使用字符类[:digit:]
来代替[0-9]
.
相反,-v
您可以反转范围:
grep '^[^0-9]' filename
这将匹配任何不以数字开头的行,但不会匹配空白行。
对于grep
,sed
和awk
,我的一般规则是,对于匹配和简单提取,使用grep
,对于无状态重写,使用sed
,对于有状态修改,使用awk
。这就是为什么我建议使用grep
而不是sed
按照您在问题中提出的要求(其他人已经回答了sed
)。
答案2
sed -e '/^[0-9]/d' filename > filename.new
或就地修改
sed -i -e '/^[0-9]/d' filename
答案3
sed -e '/^[0-9].*$/d' oldfile > newfile