我想找到一种使用awk或sed删除包含4位以上数字的行的方法:
输入:
test12test1
test154test43test
test12
所需的输出:
test12test1
test12
如何解决此问题?
答案 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位,则删除该行。