更新文本文件中的字段,shell bash

时间:2013-01-20 09:25:23

标签: bash shell

我有一个文本文件。

文本文件中的信息是

Book1:Author1:10.50:50:5
Book2:Author2:4.50:30:10

第一个是书名,第二个是作者姓名,第三个是价格,第四个是数量,第五个是销售数量。

我试图更新价格,它适用于:

read -p $'New Price: ' newPrice
sed "s/${Title}:${Author}:[^:]\+/${Title}:${Author}:${newPrice}/g" BookDB.txt > tempBook.txt
mv -f tempBook.txt BookDB.txt
echo "Book price updated!"

当我退出程序并添加代码以使用以下内容更新数量时:

read -p $'New Quantity: ' newQty
sed "s/${Title}:${Author}:${Price}:[^:]\+/${Title}:${Author}:${Price}:${newQty}/g" BookDB.txt > tempBook.txt
mv -f tempBook.txt BookDB.txt
echo "Book quantity updated!"

数量无法更新,因为我丢失了价格信息。如果我立即在存储价格的程序中添加了一本新书,我能够编辑数量,但对于其他书籍,则无法编辑可用的数量。

有人可以帮忙吗?我想知道我是否可以提取/存储该书价格的价值。

1 个答案:

答案 0 :(得分:1)

对于更新数量,您可以使用:

read -p $'New Quantity: ' newQty
sed -re "s/${Title}:${Author}:([^:]+):[^:]+/${Title}:${Author}:\1:${newQty}/g" BookDB.txt > tempBook.txt
mv -f tempBook.txt BookDB.txt
echo "Book quantity updated!"