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

Regex 删除任何以大写字母开头的行,regex,bash,awk,sed,Regex,Bash,Awk,Sed,我有一个很大的文本文件,每行有数千个单词 如何删除以大写字母开头的所有行以及仅为一个字母的所有行 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 dele

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

如何删除以大写字母开头的所有行以及仅为一个字母的所有行

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执行此操作

谢谢。

我想说:

$ awk 'length($0)>1 && !/^[A-Z]/' file
abjurer
abkar
abkari
ablach
ablactate
ablactation
这将检查字符串是否:

长度超过1个字符。 不以任何大写字母开头。 你也可以跟随和使用/^[[:upper:][]/”而不是/^[A-Z]/不依赖于您所在的地区。

我想说:

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

grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file

sed -r '/^([[:upper:]]|[[:alpha:]]$)/d' file
这将检查字符串是否:

长度超过1个字符。 不以任何大写字母开头。 你也可以跟随和使用/^[[:upper:][]/”而不是/^[A-Z]/不依赖于您的区域设置。

您可以使用:

grep -Ev '^([A-Z]|.$)' file 
abjurer
abkar
abkari
ablach
ablactate
ablactation
awk '!/^([[:upper:]]|[[:alpha:]]$)/' file

grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file

sed -r '/^([[:upper:]]|[[:alpha:]]$)/d' file
或使用sed保存更改:

sed -i.bak -r '/^.$|[A-Z]/d' file
您可以使用:

grep -Ev '^([A-Z]|.$)' file 
abjurer
abkar
abkari
ablach
ablactate
ablactation
或使用sed保存更改:

sed -i.bak -r '/^.$|[A-Z]/d' file
我将使用sed来实现这一点:

sed '/^.$/d;/^[[:upper:]]/d' file
这是两个由;分隔的命令;。第一个删除仅包含单个字母的行,第二个删除以大写字母开头的行。我真的鼓励您使用[[:upper:]而不是[A-Z],使其独立于您的区域设置工作。

我将使用sed来实现这一点:

sed '/^.$/d;/^[[:upper:]]/d' file
awk '!/^([[:upper:]]|[[:alpha:]]$)/' file

grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file

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


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

使用任何awk/grep/sed都绝对可能。试试看,让我们知道你被困在哪里了!是否要删除以单个字母或单个字符开头的行?编辑您的问题,以显示仅包含数字3的行会发生什么情况。例如,我投票将此问题作为离题题结束,因为它只是要求编写代码,而不试图解决问题。@Johnsyweb显然没关系,前几天我为此提出了一个meta,他们几乎只是说你可以发布任何你想要的东西,对它的否决票会阻止答案,哈哈。我批准了答案@约翰西韦布,我不需要用python、java或Fortran编写代码,我明确要求用bash编写代码。这意味着我在bash中做了一些尝试。无论如何,感谢大家。绝对可以使用awk/grep/sed中的任何一种。试试看,让我们知道你被困在哪里了!是否要删除以单个字母或单个字符开头的行?编辑您的问题,以显示仅包含数字3的行会发生什么情况。例如,我投票将此问题作为离题题结束,因为它只是要求编写代码,而不试图解决问题。@Johnsyweb显然没关系,前几天我为此提出了一个meta,他们几乎只是说你可以发布任何你想要的东西,对它的否决票会阻止答案,哈哈。我批准了答案@约翰西韦布,我不需要用python、java或Fortran编写代码,我明确要求用bash编写代码。这意味着我在bash中做了一些尝试。无论如何,多亏了大家。这可以修改为只捕捉重复字符的行吗?aaaa aa bbbbbb这听起来与最初的问题大不相同,需要进一步的信息。您可能最好提出一个新问题来说明问题。这将删除空行和包含非字母的单个字符的行,并且在某些区域设置中,将删除不以大写字母开头的行。是否可以修改此选项以仅捕获具有重复字符的行?aaaa aa bbbbbb这听起来与最初的问题大不相同,需要进一步的信息。您可能最好问一个新问题来说明问题。这将删除空行和包含非字母的单个字符的行,并且在某些地区将删除不以大写字母开头的行。为什么要使用大写字母?请注意字母后面的$。删除以大写字母开头的行是^upper,删除仅包含字母的行是^alpha$。哦,是的,没有找到括号的位置。聪明为什么要使用大写字母?请注意字母后面的$。删除以大写字母开头的行是^upper,删除仅包含字母的行是^alpha$。哦,是的,没有找到括号的位置。聪明
awk '!/^([[:upper:]]|[[:alpha:]]$)/' file

grep -Ev '^([[:upper:]]|[[:alpha:]]$)' file

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