我想找到一种方法来使用 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 位数字,则删除该行。