Bash 根据记录的第一个字母awk查找记录的方法

Bash 根据记录的第一个字母awk查找记录的方法,bash,shell,unix,awk,Bash,Shell,Unix,Awk,我只想找出名字以使用awk开头的人。我该怎么做 REGNO NAME DEPT AVG STATUS 100 Tony ECE 30 FAIL 200 Jimmy ECE 67 PASS 300 Sanjay CSE 8

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

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 '$2 ~ "^A" && $3 == "IT" {print $2, $3}'
没有像
=“A*”


没有像
==“A*”

这样的通配符匹配,这将适用于您:

kent$  awk '$2~/^A/&&$3=="IT"{print $2,$3}' file
Aarthi IT
你的问题是,被glob和regex弄糊涂了


在awk中,
==
不会执行全局检查,它会比较两个值,检查它们是否相等<代码>~是一个正则表达式匹配检查,它需要一个静态或动态正则表达式。

这将适用于您:

kent$  awk '$2~/^A/&&$3=="IT"{print $2,$3}' file
Aarthi IT
你的问题是,被glob和regex弄糊涂了


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

awk'$2~/^a/&&3==“it”{print$2,$3}”文件
awk'$2~/^a/&&3==“it”{print$2,$3}”文件
正确。如果查找以
N
开头的名称与标题行不匹配,特别是如果他们没有在不同的字段值上添加第二个条件:
awk'(NR>1)&($2~/^a/)&($3==“it”){print$2,$3}文件
,OP可能也会希望抛出
1
。OP可能也想加入
NR>1
,因此,如果/当查找以
N
开头的名称时,它与标题行不匹配,尤其是如果/当它们没有在不同的字段值上添加第二个条件时:
awk'(NR>1)&($2~/^a/)&($3=“it”){print$2,$3}文件