假设我的文本文件中有这一行,格式如下。

"Title:Author:Price:QtyAvailable:QtySold"

我的文本文件的内容如下所示
 Hello World:Andreas:10.50:10:5
 Lord Of The Rings:Duke:50.15:50:20
    (some other records...)

1)用户输入作者和标题。
2)如果程序找到author+title,它会要求用户更新任何可用的字段(对于本案例,包括title、author、price等)。
3)例如,我想更新hello world book的价格。
4)我该怎么做才能告诉程序提取hello world行的内容,并进入10.50以替换书的价格?(假设书的新价格将由用户的输入决定)
希望得到我的答案。
提前感谢那些帮忙的人!

最佳答案

以下是让您开始的内容:
示例脚本:

[jaypal:~/Temp] cat s.sh
#!/bin/bash

echo "Author?"
read author

echo "Title?"
read title

grep -c "$title:$author" file > /dev/null # Look for a line with matching values

if [ $? == 0 ]; then # If found then offer to change price
    echo "I found the book, Do you want to update price to what?"
    read newprice
    sed -i "s/\($book:$author\):[^:]*:/\1:$newprice:/" file
fi

输入数据:
[jaypal:~/Temp] cat file
Hello World:Andreas:10.50:10:5
Lord Of The Rings:Duke:50.15:50:20

执行:
[jaypal:~/Temp] ./s.sh
Author?
Andreas
Title?
Hello World
I found the book, Do you want to update price to what?
40
[jaypal:~/Temp] cat file
Hello World:Andreas:40:10:5
Lord Of The Rings:Duke:50.15:50:20

关于linux - 从文本文件进入一行并对其进行编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9022278/

10-16 20:32