我有一个包含很多行的文件,例如:
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