簡體   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