简体   繁体   English

Awk第3列(如果第二行与一个变量匹配)

[英]Awk 3rd column if second coulmn matches with a variable

I am new to Awk and linux. 我是Awk和linux的新手。 I want to print 3rd column if 2nd column matches with a variable. 如果第二列与变量匹配,我想打印第三列。

file.txt
1;XYZ;123
2;ABC;987
3;ZZZ;999

So I want to print 987, After checking if 2nd column is ABC 所以我想打印987,在检查第二列是否为ABC之后

name="ABC"
awk -F';' '$2==$name { print $3 }' file.txt

But this is not working. 但这是行不通的。 Please help. 请帮忙。 Please note, I want to use AWK only, to understand how this can be achieved using awk. 请注意,我只想使用AWK,以了解如何使用awk实现此目的。

Do following and it should fly then. 跟随,它应该会飞。 In awk variables don't work like shell you have to explicitly mention them by using -v var_name in awk code. awk变量不能像shell那样工作,您必须在awk代码中使用-v var_name来明确提及它们。

name="ABC"
awk -F';' -v name="$name" '$2==name{ print $3 }' file.txt

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM