如果“:”之后少于 4 个字符,则删除整行

如果“:”之后少于 4 个字符,则删除整行

我有一个包含很多行的文件,例如:

blue:fish
red:tomato
black:moon

如果“:”之后少于 4 个字符,我希望删除整行。

答案1

您可以使用sed:

sed -r -e '/:.{0,3}$/d' data

-r使用扩展正则表达式(for {})。该sed表达式使用冒号后跟零到三个字符,然后是行尾来匹配所有行;d删除这些行。其余所有内容将被打印。

答案2

此 AWK 命令分割:并打印第二个字段至少为 4 个字符(不少于 4 个字符)的行。假设::始终存在且不会多次出现。

awk -F : "length($2) >= 4"

如果它出现多次,那么您可以使用$NF而不是$2引用最后一列。

答案3

有很多方法可以做到这一点。

这里有一个perl

$ perl -ne 'print unless /:.{0,3}$/' file
blue:fish
red:tomato
black:moon

答案4

使用grep

grep -E ':.{4,}$' file

使用grep+ sponge(来自 moreutils)“就地”“编辑”文件:

grep -E ':.{4,}$' file|sponge file

相关内容