首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用循环时显示某些事物的不确定性

在使用循环时显示某些事物的不确定性
EN

Stack Overflow用户
提问于 2015-01-13 12:15:47
回答 1查看 59关注 0票数 1

我有这个while循环,在下面我试图得到下面列出的结果。循环的目的是通过BookDB.txt查找与标题或作者匹配的所有模式,在找到之后,循环将打印出来,但目前我的问题是,我试图在所有匹配模式的列表"Number of Record: X“之前插入一行。

代码语言:javascript
复制
number of records found: X
Title,Author,Price,QtyAvailable,QtySold

我不知道把这行放在哪里才能得到记录,因为如果我把它放进循环中,它就会被复制,并且我试图避免重复找到的记录行的数量。

代码语言:javascript
复制
#matching item 1     
number of records found: X
Title,Author,Price,QtyAvailable,QtySold

#matching item 2
number of records found: X
Title,Author,Price,QtyAvailable,QtySold

但是我不确定该如何修改我的代码来实现它。需要帮助,文件的输入是

代码语言:javascript
复制
 Title:Author:Price:QtyAvailable:QtySold


function search_book
 {
echo "Enter Title: "
read title_r
echo "Enter Author: "
read author_r
while read -r result
do
title=$(echo "$result" | cut -f 1 -d ":")
author=$(echo "$result" | cut -f 2 -d ":")
price=$(echo "$result" | cut -f 3 -d ":")
qty_ava=$(echo "$result" | cut -f 4 -d":")
qty_sold=$(echo "$result" | cut -f 5 -d ":")
if echo "$title" | grep -iq "$title_r" && echo "$author" | grep -iq "$author_r";
then
record=$(grep -io "$title" BookDB.txt | sort | uniq -c)
echo -e "$title,$author,$price,$qty_ava,$qty_sold"      
fi  
done < ./BookDB.txt
echo ""
echo "Number of records found: " $record | cut -f1-6 -d" "
echo ""

  }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-14 01:35:59

您只需将记录行放在while循环之前,并先回显记录,然后循环将在程序中运行,并显示您的匹配模式列表,而不需要任何记录复制。

代码语言:javascript
复制
function search_book
{
   echo "Enter Title: "
   read title_r
   echo "Enter Author: "
   read author_r
   record=$(grep -io "$title_r" BookDB.txt | sort | uniq -c)
   echo "Number of records found: " $record | cut -f1-6 -d" "
   while read -r result
   do
   title=$(echo "$result" | cut -f 1 -d ":")
   author=$(echo "$result" | cut -f 2 -d ":")
   price=$(echo "$result" | cut -f 3 -d ":")
   qty_ava=$(echo "$result" | cut -f 4 -d":")
   qty_sold=$(echo "$result" | cut -f 5 -d ":")
   if echo "$title" | grep -iq "$title_r" && echo "$author" | grep -iq "$author_r";
   then
   #record=$(grep -io "$title" BookDB.txt | sort | uniq -c)
   echo -e "$title,$author,"\$"$price,$qty_ava,$qty_sold"
   fi   
   done < ./BookDB.txt
   echo ""
   #echo "Number of records found: " $record | cut -f1-6 -d" "
   echo ""
   main_menu

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27921993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档