删除超过 x 位的行



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

输入:

test12test1
test154test43test
test12

期望的输出:

test12test1
test12

如何解决此问题?

其中之一可能会。

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

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

perl tr///运算符返回替换次数,因此

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

或者如果你想使用外壳变量

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

这可能对你有用(GNU sed(:

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

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

相关内容

  • 没有找到相关文章

最新更新