删除由大写和小写字母组成的单词?

Ahm*_*med 3 grep text-processing

我有一个名为file.txt. 在这个文件中有大小写字母组成的单词,也有大小写字母和数字组成的单词。我想过滤文件的,所以输出是免费的包含单词大写和小写字母。例如,输入file.txt

Aaa
aBb
aB
Aa12
12aA
123
123Ab
AAA
aaa
Run Code Online (Sandbox Code Playgroud)

在这个文件中有大小写字母的单词(例如 Aaa、aBp),单词包含大小写字母数字(例如 123Ab)。此外,to 单词仅包含小写字母(例如 aaa),或仅包含大写字母(例如 AAA)。我只想删除包含大写小写字母的单词(例如 Aaa、aBp),因此输出如下:

Aa12
12aA
123
123Ab
AAA
aaa
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Spa*_*awk 5

grep -Exv '[A-Za-z]*([A-Z][a-z]|[a-z][A-Z])[A-Za-z]*'
Run Code Online (Sandbox Code Playgroud)

解释

  • 这个想法是首先匹配你想要的相反的东西,即那些只包含大写和小写字母的行。这使用grep -Ex,即带有扩展正则表达式的grep,匹配整行。该-v标志然后否定正则表达式,即返回那些与以下正则表达式匹配的行。
  • 中间部分([A-Z][a-z]|[a-z][A-Z])匹配一个大写字母后跟一个小写字母,反之亦然。
  • 外部部分[A-Za-z]*...[A-Za-z]*意味着该行的其余部分必须仅包含大写或小写字母。

  • 啊,这就是你的意思。我相信你可以省略`+`s 并将命令简化为`grep -Exv '[A-Za-z]*([AZ][az]|[az][AZ])[A-Za- z]*'`。PS OP 还没有投票权。 (2认同)