Unix:如何删除包含N个以上连续大写字符的行



我想删除文件中包含3个或更多连续大写字符的行。

输入:

ABBOTT FLORIST MIAMI BEACH
Abbott Lake Loop
Abbott Philip DDS

输出:

Abbot Lake Loop

我尝试了sed 's/[A-Z]{3}/g' infile,但没有得到想要的结果。有什么帮助吗?

使用GNU sed的一种方法:

sed -r '/[A-Z]{3,}/d' file

grep也可以使用:

grep -vE "[A-Z]{3,}" file

这里是另一个使用awk:的替代方案

$ awk '/[A-Z]{3,}/{next}1' file
Abbott Lake Loop 
sed -n '/[A-Z]{3,}/ p' infile

只打印至少有3个大写字母的行

你的sed(sed 's/[A-Z]{3}/g' infile(是一个部分sed动作

  • 创建某个内容的替换,因此每行输入至少打印一个空行
  • 您选择一个大写字符,后跟{3},缺少{之前的转义
  • 你选择了一个模式,但没有给出任何替换结果。s/selectpattern/resultpattern/option

最新更新