假设我有文件FirstDB.txt并填充了它。使用productID:productName:Quantity:Price:DateRegistered格式
示例:cat FirstDB.txt
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
0001 Fried Tarantula 5 100 500
0003 Century Egg 7 50 350
0005 Balut (Egg) 6 15 90我想用用户购买或选择的内容更新FirstDB.txt产品的数量。考虑到上面的两个文件,在输出之后我想要发生的事情是:
cat 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我只想切割.cart的第一列,并使用grep $(cat .cart)获取所需的行,然后剪切.cart的第三列以获得数量,然后再将其减到FirstDB.txt的第三列,但似乎无法得到所需的输出。我还在考虑在FirstDB.txt上使用FirstDB.txt,但还没有尝试过。有什么帮助吗?非常感谢!
发布于 2017-09-04 15:27:38
sed只是简单地做s/old/new/,仅此而已。您不应该简单地做s/old/new/所以不应该考虑使用sed。只要使用awk,即使你现在必须学习它..。
$ 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-27https://stackoverflow.com/questions/46038368
复制相似问题