Linux 如何从文件的grep中分割行?
给定Employee.txtLinux 如何从文件的grep中分割行?,linux,bash,Linux,Bash,给定Employee.txt PD:198801221:Jason:Jason@gmail.com PU:19941029:Tan:tan@gmail.com PS:19960601:May:may@gmail.com 还有一个表格 echo -n "Enter BirthDate:";read bdate grep "$bdate" Employee.txt echo "Employee name (auto display):"
PD:198801221:Jason:Jason@gmail.com
PU:19941029:Tan:tan@gmail.com
PS:19960601:May:may@gmail.com
还有一个表格
echo -n "Enter BirthDate:";read bdate
grep "$bdate" Employee.txt
echo "Employee name (auto display):"
echo "Employee email (auto display):"
它获取员工的出生日期,并根据输入文件显示姓名和电子邮件
例如,如果我将出生日期输入为19941029
,则从文件中得到的结果是PU:19941029:Tan:tan@gmail.com
上面的脚本显示了整行
如何将该行分隔为自动显示名称和电子邮件字段?您可以通过管道将grep输出分离出来,然后选择所需的字段
#!/usr/bin/env bash
set -eu
echo -n "Enter BirthDate: "
read -r bdate
found=$(grep "$bdate" Employee.txt)
name=$(echo "$found" | cut -d: -f 3)
email=$(echo "$found" | cut -d: -f 4)
echo "Employee name (auto display): $name"
echo "Employee email (auto display): $email"
这是相当简单的,如果字段包含分隔符(本例中为冒号),则会中断。在这种情况下,您应该获得一个CSV阅读器。您可以使用IFS将输入读取到4个变量中
echo -n "Enter BirthDate:";read bdate
match=$(grep "$bdate" Employee.txt)
IFS=':' read -r first second third fourth <<<$match
echo "Employee name (auto display):" $third
echo "Employee email (auto display):" $fourth
echo-n“输入生日:”;读bdate
匹配=$(grep“$bdate”Employee.txt)
如果=':'阅读-r第一秒第三秒第四这是一个现实世界问题的简化版本,还是一个课程学习练习,还是??基本上,你用错了工具。祝你好运