Bash 在Linux脚本中将变量传递给awk

Bash 在Linux脚本中将变量传递给awk,bash,awk,Bash,Awk,我正在尝试编写一个脚本,从用户那里获取输入,然后使用该值使用awk搜索test.csv文件并输出到屏幕。test.csv的内容是: Name ID Rachel 123 Mark 321 Robert 461 例如,我希望获取ID的输入,并使用awk显示与此ID关联的名称 #!/bin/bash echo "Enter ID#"; read ID echo $(awk -v val=$ID '/val/{print}' /root/Desktop/test.csv 谢谢/va

我正在尝试编写一个脚本,从用户那里获取输入,然后使用该值使用awk搜索test.csv文件并输出到屏幕。test.csv的内容是:

Name   ID
Rachel 123
Mark     321
Robert  461
例如,我希望获取ID的输入,并使用awk显示与此ID关联的名称

#!/bin/bash
echo "Enter ID#";
read ID
echo $(awk -v val=$ID  '/val/{print}' /root/Desktop/test.csv

谢谢

/val/
与文本字符串“val”匹配。相反,您可以使用以下命令将每行的第二个字与变量匹配:

awk -v val="$ID"  '$2 == val {print}' /root/Desktop/test.csv
请注意,这假设您的输入是您发布它的方式。如果您的
.csv
文件像通常一样以逗号分隔,则必须指定
-F,

#!/bin/bash
read -p "Enter id: " id
awk -F , -v val="$id"  '$2 == val { print $1 }' /root/Desktop/test.csv

欢迎来到堆栈溢出。请花点时间阅读并参考您可以在此处询问的内容和方式。你为什么在地球上标注这个C++?对不起,这是我的第一篇文章。请在此问题上添加错误的标签检查您的示例代码。它将标记语法错误,并经常提供关于如何纠正问题的好提示(但有时理解消息需要一点时间)。祝你好运。你好,谢谢你的回答。是的,输入文件以逗号分隔。请您编写完整的echo命令以显示与输入ID关联的名称,好吗?非常感谢。