gpt4 book ai didi

linux - 根据文本文件中的单词检查用户输入

转载 作者:太空狗 更新时间:2023-10-29 11:46:44 25 4
gpt4 key购买 nike

我正在为我的程序开发一个选项,它应该像这样工作:

  1. 用户输入标题
  2. 用户输入作者
  3. 系统然后检查用户在名为 BookDB.txt 的文本文件中输入的标题和作者
  4. 如果文本文件中已经存在记录,系统会提示错误
  5. 否则它将继续让用户输入价格、可用数量和已售出数量。
  6. 然后会添加书籍

我尝试使用 grep,但无济于事。以下是我针对此特定功能的代码。

function fnAddBook()
{
echo "Title: "
read inputTitle
echo "Author: "
read inputAuthor

if grep -Fq "$inputTitle" BookDB.txt; then
if grep -Fq "$inputAuthor" BookDB.txt; then
echo "Error!"
fi
else
echo "Price: "
read inputPrice
echo "$inputTitle:$inputAuthor:$inputPrice" >> BookDB.txt
echo "New Book successfully added!"
fi
}

BookDB.txt 的内容内容格式 |标题:作者:价格:QtyAvail:QtySold

Hello World:Andre:10.50:10:5
Three Little Pig:Andrew Lim:89.10:290:189
All About Ubuntu:Ubuntu Team:76.00:55:133
Catch Me If You Can:Mary Ann:23.60:6:2
Happy Day:Mary Ann:12.99:197:101

更新的问题:在这种情况下,即使我输入“Catch Me If You Can”作为标题+“Ubuntu Team”作为作者,它也会引发错误。我如何修改代码以使其逐行检查?

提前感谢那些提供帮助的人! :)

最佳答案

您的代码有 3 个问题。

第一个是 grep 的 x 选项导致它只匹配完整的行,因为你把作者和标题放在同一行,所以这不会匹配。

x 选项“Gaiman”与“Gaiman:Nation:$20”不匹配,如果您从 grep-options 中删除 x,这将起作用。

第二个问题是两个 grep 是相互独立的。因此,如果您有一本名为“国家”的书和一本“盖曼”的书,这将被视为匹配,即使您拥有的“国家”书是“国家的财富”而您拥有的盖曼书是“阿南斯男孩。

第三个问题是 grep 会找到部分匹配项。如果您尝试输入“It”这本书,那么 grep 会断定它已经在数据库中,因为“It came from the desert”在。

您需要一个标记值来描述标题以解决此问题。 (哨兵必须是一些不能存在于书名或作者名中的字符)

function fnAddBook()
{
echo "Title: "
read inputTitle
echo "Author: "
read inputAuthor
if grep -Fq "$inputTitle:inputAuthor:" BookDB.txt
then
echo "Error!"
else
echo "Price: "
read inputPrice
echo "$inputTitle:$inputAuthor:$inputPrice" >> BookDB.txt
echo "New Book successfully added!"
fi
}

这里假定“:”不能出现在作者名或书名中。

关于linux - 根据文本文件中的单词检查用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9018918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com