繁体   English   中英

如何从文件的grep中拆分行?

[英]How to split lines from a grep on a file?

给定 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):"
echo "Employee email (auto display):"

它获取员工的出生日期并根据输入文件显示姓名和电子邮件。

例如,如果我在 BirthDate 中输入19941029 ,我从文件中得到的结果是PU:19941029:Tan:tan@gmail.com

上面的脚本显示了整行。

如何将行分成自动显示名称和电子邮件字段?

您可以使用 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

参考

https://bash.cyberciti.biz/guide/$IFS

https://unix.stackexchange.com/questions/209123/understanding-ifs-read-r-line

您可以通过cut管道输出 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 阅读器。

暂无
暂无

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

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