有简单的awk脚本的麻烦

时间:2015-02-08 02:37:18

标签: bash shell command-line awk pipe

这适用于命令行:

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

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

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

4 个答案:

答案 0 :(得分:5)

你用单引号的东西:

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

是一个AWK脚本。只需将其粘贴在文件中:

BEGIN {FS=","}
$5>1900 {print $2}

答案 1 :(得分:4)

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

在您的情况下,首先是语法错误,因为您未将action括在大括号内({}),因此这将导致AWK同时考虑pattern和{ {1}}被省略了。我们可以在AWK中将关系表达式用作action,因此您可以使用关系表达式而不是使用pattern语句,如下所示。

if

答案 2 :(得分:1)

AWk脚本就像,

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

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

答案 3 :(得分:1)

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

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

为了实现脚本,您可以运行:

chmod +x ./script_file_name_here

然后你可以运行

./script_file_name_here presidents.csv

并发生同样的事情。