删除以大写字母开头的任何行



我有一个大的文本文件,每行上有数千个单词。

我如何删除所有以大写字母和所有只是一个字母的线开始的所有行。

A          -> To be deleted
a          -> To be deleted
abjurer
abkar
abkari
Abkhas     -> To be deleted
Abkhasian  -> To be deleted
ablach
ablactate
ablactation
B          -> To be deleted
b          -> To be deleted
Bounce     -> To be deleted
...
...

可以用bash做到这一点。

谢谢。

您可以使用:

grep -Ev '^([A-Z]|.$)' file 
abjurer
abkar
abkari
ablach
ablactate
ablactation

或使用SED保存更改:

sed -i.bak -r '/^.$|[A-Z]/d' file

我会说:

$ awk 'length($0)>1 && !/^[A-Z]/' file
abjurer
abkar
abkari
ablach
ablactate
ablactation

这检查了字符串:

  • 长度超过1个字符。
  • 不从任何大写字母开始。

您也可以遵循HEK2MGL的好建议,并使用!/^[[:upper:]]/'而不是!/^[A-Z]/不依赖您的语言环境。

awk '!/^([[:upper:]]|[[:alpha:]]$)/' file
grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file
sed -r '/^([[:upper:]]|[[:alpha:]]$)/d' file

我将使用sed

sed '/^.$/d;/^[[:upper:]]/d' file

这是两个由;隔开的命令。第一个仅删除仅包含单个字母的线,第二个以大写字母开头的线。我真的鼓励您使用[[:upper:]]而不是[A-Z]使其独立于您的语言环境。

相关内容

  • 没有找到相关文章

最新更新