我还在学习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
答案 0 :(得分:0)
在您的代码中,未设置变量NUMBER
,因此对于大于$1>NUMBER
的数字,true
始终评估为0
。您需要将变量传递给awk脚本:
awk '$1>NUMBER{ print $0 }' NUMBER="$1" data.txt
答案 1 :(得分:0)
使用-v选项传递变量
#!/bin/bash
awk -v NUMBER=$1 '{ if ($1> NUMBER) print $0 }'