我想逐行替换和删除文本文件中的子字符串。我想要更改的信息是在特定字段下。例如,我有以下文字:
{name:x, version:1.0, info:"test", ...}
{name:y, version:0.1, info:"test again", ...}
{name:z, version:1.1, info:"test over", ...}
{name:x, info: "test", ..., version:1.2, ...}
该字段可以按随机顺序排列。我想删除所有的版本值,并用一些特定的字符串替换所有的信息值,我们说" foo"。
预期结果:
{name:x, info:"foo", ...}
{name:y, info:"foo", ...}
{name:z, info:"foo", ...}
{name:x, info:"foo", ...}
是否有通过shell脚本执行此操作的智能方法?我不知道如何更换上面的子字符串?
我知道一些愚蠢的命令
sed 's/info:\([^,}]*\)/info:\"foo\"/' file
sed 's/version:\([^,}]*\)//' file
答案 0 :(得分:1)
sed 's/\(version:[^,}]*,\)*\(.*\)info:[^,}]*\(,\{0,1}\)\(.*\)\(, *version:[^,}]*,\)*/\2info:"foo"\3\4/' file
(未经测试)应该这样做(GNU sed为--posix
)