我有一个函数可以查看文件中的每个数字,检查它是否是一个完美的正方形,如果是,则将计数器加 1。该函数的目标是计算完美正方形的总数。
awk 'function root(x)
{if (sqrt(x) == int(sqrt(x))) count+=1 }
{print root($1)}
END{print count}' numbers_1k.list
每次检查文件行的条件时,此代码的输出都会给出一个空行。因此,如果文件有 1000 行,则其在输出中的 1000 个空白行后跟变量 count
有没有办法避免这种情况?我查过以前的类似questions .
最佳答案
问题是您使用 { print root() }
其中 root()
不返回任何内容,它应该是:
awk 'function root() { return sqrt(x) == int(sqrt(x))}
root($1) {count++}
END {print count}' file
顺便说一句,你不需要一个函数:
awk 'sqrt($1) == int(sqrt($1)) {count++} END {print count}' file
关于linux - 输出包括使用 Awk 检查的每个条件的空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52830142/