[英]How to edit bash text file using sed
天才:约翰尼·布拉沃: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。你们中的任何一个能启发我哪里出错了吗?
提前致谢
在这种情况下,awk套件更好:
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
您的正则表达式不正确。 尝试这个:
sed -i "s/^\($title:$name:.*\):.*$/\1:$newValue/" test.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.