首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用另一个文件的输入更新一个文件

用另一个文件的输入更新一个文件
EN

Stack Overflow用户
提问于 2017-09-04 13:41:49
回答 1查看 52关注 0票数 0

假设我有文件FirstDB.txt并填充了它。使用productID:productName:Quantity:Price:DateRegistered格式

示例:cat FirstDB.txt

代码语言:javascript
复制
0001:Fried Tarantula:15:100:2017-08-27
0002:Wasp Crackers:18:25:2017-08-27
0003:Century Egg:19:50:2017-08-27
0004:Haggis Flesh:20:90:2017-08-27
0005:Balut (Egg):85:15:2017-08-27

然后,我有一个由名为.cart的用户生成的文件,它还填充了productID productName Quantity IndividualPrice TotalPrice格式

cat .cart

代码语言:javascript
复制
0001    Fried Tarantula     5   100     500
0003    Century Egg         7   50      350
0005    Balut (Egg)         6   15      90

我想用用户购买或选择的内容更新FirstDB.txt产品的数量。考虑到上面的两个文件,在输出之后我想要发生的事情是:

cat FirstDB.txt

代码语言:javascript
复制
0001:Fried Tarantula:10:100:2017-08-27
0002:Wasp Crackers:18:25:2017-08-27
0003:Century Egg:12:50:2017-08-27
0004:Haggis Flesh:20:90:2017-08-27
0005:Balut (Egg):79:15:2017-08-27

我只想切割.cart的第一列,并使用grep $(cat .cart)获取所需的行,然后剪切.cart的第三列以获得数量,然后再将其减到FirstDB.txt的第三列,但似乎无法得到所需的输出。我还在考虑在FirstDB.txt上使用FirstDB.txt,但还没有尝试过。有什么帮助吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 15:27:38

sed只是简单地做s/old/new/,仅此而已。您不应该简单地做s/old/new/所以不应该考虑使用sed。只要使用awk,即使你现在必须学习它..。

代码语言:javascript
复制
$ cat tst.awk
NR==FNR { a[$1] = $(NF-2); next } # save a["0001"]=5, etc from cart
FNR==1 { FS=OFS=":"; $0=$0 }      # split FirstDB by ":"s instead of spaces
{ $3 -= a[$1]; print }            # when $1=="0001" set $3 to $3-a["0001"]

$ awk -f tst.awk cart FirstDB.txt
0001:Fried Tarantula:10:100:2017-08-27
0002:Wasp Crackers:18:25:2017-08-27
0003:Century Egg:12:50:2017-08-27
0004:Haggis Flesh:20:90:2017-08-27
0005:Balut (Egg):79:15:2017-08-27
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46038368

复制
相关文章

相似问题

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