繁体   English   中英

如何使用sed编辑bash文本文件

[英]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

OUTPUT:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM