首页 > 解决方案 > 用双引号替换变量 num - SED

问题描述

我有这样的一行:

"abc/x-y-z": "^1.4"

我需要在同一个文件中替换^1.4*,这样输出是"abc/x-y-z": "*" 双引号内的 num 可以是任何变量数。

我试过这个,但它是高度特定的^1.4数字:

sed -i '21s/^1.4/*/' abc.json

标签: sed

解决方案


使用您显示的示例,请尝试以下操作。您需要在^此处转义以使其成为文字字符,并且您还需要转义.点以使其视为文字字符。

sed 's/\^1\.4/*/' Input_file

或根据 OP 的评论使其动态尝试:

sed 's/\^[0-9]+\.[0-9]+/*/' Input_file

此外,如果您在文件的第 21 行执行它,那么21s就像您在尝试中尝试的那样使用。此代码将仅替换第一次出现的 ^1.4,以防您想要替换所有出现然后g对上述代码使用(全局替换)选项。

一旦您对结果感到满意,我就没有使用-i选项(对 Input_file 本身进行就地更新),然后sed -i在上面的代码中使用选项。


推荐阅读