首先需要了解素数的定义和判断方法。素数是指只能被 1 和自身整除的自然数,也就是除了 1 和本身之外没有其他因子的数。判断一个数是否为素数可以使用试除法,即用从 2 开始到这个数的平方根之间的每个数去除它,如果都无法整除,则它就是素数。
有了这个前提知识,我们就可以编写 awk 脚本来实现素数的提取了。以下是示例代码:
#!/usr/bin/awk -f
# 从文件中提取素数
BEGIN {
FS = " " # 文件以空格分隔
}
# 判断一个数是否为素数
function is_prime(n, i) {
if (n <= 1) return 0 # 小于等于 1 的数不是素数
if (n == 2) return 1 # 2 是素数
for (i = 2; i <= sqrt(n); i++) { # 使用试除法判断是否为素数
if (n % i == 0) return 0
}
return 1 # 是素数
}
# 读取文件并提取素数
{
for (i = 1; i <= NF; i++) { # 遍历每个单词或数字
if (is_prime($i)) print $i # 如果是素数则输出
}
}
运行时可以使用以下命令:
$ awk -f prime.awk input.txt
其中 prime.awk 是保存上面代码的文件名,input.txt 是需要处理的文件。执行结果将输出提取出的素数。