如何打印第一个数字大于给定参数的行?

时间:2013-11-16 19:33:23

标签: bash awk

我还在学习bash,所以我想创建一个名为myscript.sh的shell脚本。 如果我指定一个像myscript.sh 5<的text.txt 我希望它只打印第一列大于5的行。

我的text.txt文件具有以下结构:

5 15:00 email@email.com 
3 14:00 email@email2.com
8 13:00 email@email.com

我的代码是

NUMBER=$1
awk -F' ' '$1>NUMBER{ print $0 }'

但它仍会打印所有内容,如果不是NUMBER,我输入任何数字都可以正常运行

如果我写myscript.sh 3<我想要输出。的text.txt

5 15:00 email@email.com
8 13:00 email@email.com

2 个答案:

答案 0 :(得分:0)

在您的代码中,未设置变量NUMBER,因此对于大于$1>NUMBER的数字,true始终评估为0。您需要将变量传递给脚本:

awk '$1>NUMBER{ print $0 }' NUMBER="$1" data.txt

答案 1 :(得分:0)

使用-v选项传递变量

#!/bin/bash
awk -v NUMBER=$1 '{ if ($1> NUMBER) print $0 }'