删除多于x位的行

时间:2019-06-03 17:21:01

标签: regex perl awk sed word-list

我想找到一种使用awk或sed删除包含4位以上数字的行的方法:

输入:

test12test1
test154test43test
test12

所需的输出:

test12test1
test12

如何解决此问题?

3 个答案:

答案 0 :(得分:5)

其中之一可能会做。

awk -F '[0-9]' 'NF<=5' file
test12test1
test12

awk -F '[0-9]' 'NF<6' file
test12test1
test12

将字段分隔符设置为任何可能的十进制数字,然后对字段总数进行测试。
由于在字段分隔符之前和之后都有一个字段,因此需要测试该行是否超过5个字段,以确定该行是否有超过4个小数。

答案 1 :(得分:4)

perl tr///运算符返回替换的 number ,因此

perl -ne 'print if tr/0-9/0-9/ <= 4' file

或者如果您想使用shell变量

max_digits=4
perl -sne 'print unless tr/0-9/0-9/ > $max' -- -max=$max_digits file

答案 2 :(得分:1)

这可能对您有用(GNU sed):

sed 's/[0-9]/&/4;T;d' file

如果可以替换第4位,则删除该行。