如果条件为真,我需要能够输出记录。
假设这是现有文件,
Record_ID,姓名,姓氏,电话号码
如果姓氏匹配,我正在尝试输出记录。我收集用户输入以获取姓氏,然后执行以下操作。
read last_name
cat contact_records.txt | awk -F, '{if($3=='$last_name')print "match"; else print "no match";}'
此脚本不会为contact_records.txt
中的每条记录输出匹配项答案 0 :(得分:0)
您的脚本有两个问题:
首先,在'awk'的上下文中不会将$ last_name视为引用。例如,如果要查询“John”,则将$ 3与变量John而不是字符串“John”进行比较。这可以通过添加两个双引号来修复,如下所示:
read last_name
cat contact_records.txt | awk -F, '{if($3=="'$last_name'")print "match"; else print "no match";}'
其次,它实际扫描整个contact_records.txt并为每行比较打印匹配/不匹配。例如,contact_records.txt有100行,其中包含“John”。然后,通过这个脚本查询John是否在其中,产生1个“匹配”和99个“不匹配”。这可能不是你想要的。这是一个修复:
read last_name
if [ `cat contact_records.txt | cut -d, -f 3 | grep -c "$last_name"` -eq 0 ]; then
echo "no match"
else
echo "match"
fi