linux - 输出包括使用 Awk 检查的每个条件的空行

标签 linux awk

我有一个函数可以查看文件中的每个数字,检查它是否是一个完美的正方形,如果是,则将计数器加 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/

相关文章:

linux - 将数字替换为 SED 中的顺序 ID

linux - 是否可以在不访问库本身的情况下链接到共享库?

linux - 在 bash 的每一行中查找连续的空格分隔的单个字符

unix ksh 如何打印 $1 和 $2 的前 n 个字符

xml - 从 unix 命令行进行基本 xml 解析的最简单方法

linux - 在Linux中使用for循环和awk重定向和打印脚本输出

linux - 用于查找可执行文件路径的 Bash 脚本

linux - 将 RTF 粘贴为格式化的 Markdown;将 markdown 导出为格式化的 HTML

linux - 对带有日期的变量进行操作会产生错误

linux - 使用 sed 数据创建列(仅限 bash)