genius:johnny bravo:56.80:100:38
你好:杰克约翰:89.10:290:189
我的文本文件test.txt中有上面两行 如果用户正确输入字段1和字段2,我希望更改最后一个值,在本例中为189到50。
我做了什么,但没有工作
read title # genius/joker
read name # jonny bravo or jack john
echo "enter new value"
read newValue
sed -i "s/^\($title:$name:[^:]*\):[^:]*:/\1:$newValue:/" test.txt
从我的sed,我意识到代码的第4个字段是更改,在这种情况下290更改为新值而不是189。 你们任何人都可以告诉我哪里出错了吗?
提前致谢
答案 0 :(得分:4)
title="hello"
name="jack john"
n=50
awk -v f1="$title" -v f2="$name" -v n=$n -F: '$1==f1 && $2==f2{$NF=n}1' OFS=: file
genius:johnny bravo:56.80:100:38
hello:jack john:89.10:290:50
答案 1 :(得分:1)
您的正则表达式不正确。试试这个:
sed -i "s/^\($title:$name:.*\):.*$/\1:$newValue/" test.txt