在使用简单的 awk 脚本时遇到问题

Having trouble with simple awk script

这在命令行中有效:

awk -F, '>1900 {print }' presidents.csv

但我不确定如何在 awk 脚本中执行此操作。 这是我到目前为止在脚本中尝试过的。

BEGIN {FS=","}
if (>1900)
{print }

单引号中的内容:

awk -F, '>1900 {print }' presidents.csv

一个AWK脚本。只需将其粘贴到文件中即可:

BEGIN {FS=","}
>1900 {print }

AWk 脚本会像,

#!/usr/bin/awk
BEGIN {FS=",";}
{
if (>1900)
{print ;}
}

也就是说,您需要将 if 条件括在花括号中。

如果您想要 shell 脚本作为您的 awk 命令,您可以将以下内容放入文件中:

#!/bin/bash
awk -F, '>1900 {print }' 

要使其真正执行脚本,您可以 运行:

chmod +x ./script_file_name_here

那你可以运行

./script_file_name_here presidents.csv

并发生同样的事情。

AWK 需要 pattern 进行搜索,并在找到模式时采用 actionpatternaction 可以省略,但不能同时省略。

在您的情况下,首先是语法错误,因为您没有将 action 括在大括号 ( {} ) 中,因此这将导致 AWK 认为 patternaction 被省略了。我们可以在 AWK 中将关系表达式用作 pattern,因此您可以使用如下关系表达式来代替 if 语句。

$ cat test.awk 
#!/usr/bin/awk -f

BEGIN {
    FS=",";
}

 >= 1900 {
    print ;
}