Bash 根据记录的第一个字母awk查找记录的方法
我只想找出名字以使用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
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}文件
。