我有这个awk程序
#! /usr/bin/awk
awk '{num = $1
for (div = 2; div * div <= num; div++) {
if (num % div == 0)
break
}
if (num % div == 0)
printf "Smallest divisor of %d is %d\n", num, div;
else
printf "%d is prime\n", num;
}'
当我运行它时,它会给我这个错误消息
awk: cmd. line:1: ./blabla.awk
awk: cmd. line:1: ^ syntax error
awk: cmd. line:1: ./blabla.awk
awk: cmd. line:1: ^ unterminated regexp
我已经检查过我是否使用了正确的解释器,但仍然无法正常工作。
答案 0 :(得分:3)
那不是awk程序,那是包含awk命令的shell脚本。 awk程序如下所示:
#! /usr/bin/awk -f
{num = $1
for (div = 2; div * div <= num; div++) {
if (num % div == 0)
break
}
if (num % div == 0)
printf "Smallest divisor of %d is %d\n", num, div;
else
printf "%d is prime\n", num;
}
也就是说,它将直接包含awk代码,而不是调用awk。
答案 1 :(得分:1)
尽管您可以像#!/bin/bash
那样使用bash或sh shebang,但您的awk代码应该可以在其中使用。如果您想一次坚持使用awk
,请尝试删除shebang和awk路径之间的空间,例如-> #!/usr/bin/awk -f
一旦。请注意,我在移动设备上,因此未对其进行测试。
还要从代码中删除awk '
,根据@oguz ismail不错的提示,您不必将代码放在awk '..........'
中。