Linux 从bash中的行读取表格数据

Linux 从bash中的行读取表格数据,linux,Linux,我需要检查用户提供的pin是否存在,如果存在,然后显示他们的姓名。。。我需要在bash脚本PS中使用它:我们有一个文件,其中包含以下格式的名片夹、姓名、姓氏、E/a(其他问题是否接受)和帐户余额: 0098876634569080 NIKOLAOU VASILEIOS Ε 25575 0033872234566751 MAVRAGANIS GEORGIOS Α 12345 我已经做到了 read -p "Insert Pin" if ! grep $REPLY filename then e

我需要检查用户提供的pin是否存在,如果存在,然后显示他们的姓名。。。我需要在bash脚本PS中使用它:我们有一个文件,其中包含以下格式的名片夹、姓名、姓氏、E/a(其他问题是否接受)和帐户余额:

0098876634569080 NIKOLAOU VASILEIOS Ε 25575 
0033872234566751 MAVRAGANIS GEORGIOS Α 12345
我已经做到了

read -p "Insert Pin"
if ! grep $REPLY filename
then
echo "ERROR"
exit 1
else grep $REPLY filename
$V1=grep -c $REPLY filename
head -$v1 filename | :   and then dunno :P 

据我所知,这本质上是一个关于从文件中读取字段的问题
grep
不是一个好工具——如果在不同的字段(即balance)中找到PIN,或者如果给定的值只是PIN的子字符串(例如,如果用户为其PIN输入了
0
),它将为您提供匹配。考虑一下:

read -p "Insert Pin"

found=0
while read -r pin name surname has_accepted balance; do
  # unlike grep, look ONLY in pin field, and ONLY for exact match
  if [[ $pin = "$REPLY" ]]; then
    found=1
    echo "Name is $name; surname is $surname; balance is $balance; etc"
    break # don't continue to look after we found a match
  fi
done <filename

if ! (( found )); then
  echo ERROR >&2
  exit 1
fi
读取-p“插入插针”
找到=0
而read-r pin name姓氏已接受余额;做
#与grep不同,只在pin字段中查找,并且只查找精确匹配
如果[[$pin=“$REPLY”];然后
发现=1
echo“名称为$Name;姓氏为$姓氏;余额为$balance;等等”
休息,我们找到火柴后,不要再继续看了
fi
完成&2
出口1
fi

有关在bash中读取数据的详细讨论,请参阅。

为什么要使用bash脚本执行此操作?顺便说一句——养成在询问之前先运行代码的习惯。练习告诉……也就是说,表单中的一个问题是“这是我的需求,这是实现了其中一半的代码,请实现其余的”一般来说,不是特别适合StackOverflow。如果您想知道如何实现一个特定的操作,请展示您在该操作中的最佳尝试,描述它是如何失败的,我们将帮助您纠正它——但事实上,这还不清楚,而且过于笼统。让您的代码描述您正试图做的事情也会很有帮助;作为一个读者,很难说出意图。例如,
grep-c
调用的意义是什么?知道有多少PIN实例存在如何帮助您实现您的需求?我只需要用户提供他的PIN,如果存在,那么我会向他显示他们的姓名(来自另一个文件)显然,是的。这里的
read
来自文件,而不是用户,因为它在循环中,整个循环的stdin被重定向到
i is new in this。。。所以请放松;))如果我只需要pin码,为什么在循环中我也得到了姓氏?
if(((回复%20)==0));然后…
——顺便说一句,一般来说,在评论中提出不相关的问题是不受欢迎的。