如何根据他们的第一个字母awk Unix找到记录

时间:2016-02-18 11:20:13

标签: bash shell unix awk

我想只使用awk取出名字以A开头的人。我该怎么做

REGNO   NAME            DEPT            AVG             STATUS
100     Tony            ECE             30              FAIL
200     Jimmy           ECE             67              PASS
300     Sanjay          CSE             89              PASS
400     Nethra          IT              90              PASS
500     Ramesh          MECH            45              FAIL
600     Ranjani         CSE             34              FAIL
700     Aarthi          IT              56              PASS
800     Ram             MECH            98              PASS


awk '{if($2=="A*" && $3=="IT" )  print $2,$3}' output.txt


我用过这个。有什么问题?

2 个答案:

答案 0 :(得分:1)

awk '$2 ~ "^A" && $3 == "IT" {print $2, $3}'

没有像== "A*"

这样的通配符匹配

答案 1 :(得分:1)

这对你有用:

kent$  awk '$2~/^A/&&$3=="IT"{print $2,$3}' file
Aarthi IT

您的问题是由glob和正则表达式混淆。

在awk中,==不进行全局检查,它会比较两个值,检查它们是否相等。 ~是一个正则表达式匹配检查,它期望静态或动态正则表达式。