在使用简单的 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
进行搜索,并在找到模式时采用 action
。 pattern
或 action
可以省略,但不能同时省略。
在您的情况下,首先是语法错误,因为您没有将 action
括在大括号 ( {}
) 中,因此这将导致 AWK 认为 pattern
和 action
被省略了。我们可以在 AWK 中将关系表达式用作 pattern
,因此您可以使用如下关系表达式来代替 if
语句。
$ cat test.awk
#!/usr/bin/awk -f
BEGIN {
FS=",";
}
>= 1900 {
print ;
}
这在命令行中有效:
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
进行搜索,并在找到模式时采用 action
。 pattern
或 action
可以省略,但不能同时省略。
在您的情况下,首先是语法错误,因为您没有将 action
括在大括号 ( {}
) 中,因此这将导致 AWK 认为 pattern
和 action
被省略了。我们可以在 AWK 中将关系表达式用作 pattern
,因此您可以使用如下关系表达式来代替 if
语句。
$ cat test.awk
#!/usr/bin/awk -f
BEGIN {
FS=",";
}
>= 1900 {
print ;
}