用双引号替换变量num-SED
我有这样一句话:用双引号替换变量num-SED,sed,Sed,我有这样一句话: "abc/x-y-z": "^1.4" 我需要在同一文件中将^1.4替换为*,以便输出为“abc/x-y-z”:“*” 双引号内的num可以是任何变量 我尝试过这个,但它非常特定于^1.4编号: sed -i '21s/^1.4/*/' abc.json 有了您展示的样品,请尝试以下内容。您需要在此处转义^以使其成为文字字符,还需要转义点以使其被视为文字字符 sed 's/\^1\.4/*/' Input_file 或者根据OP的评
"abc/x-y-z": "^1.4"
我需要在同一文件中将^1.4
替换为*
,以便输出为“abc/x-y-z”:“*”
双引号内的num可以是任何变量
我尝试过这个,但它非常特定于^1.4
编号:
sed -i '21s/^1.4/*/' abc.json
有了您展示的样品,请尝试以下内容。您需要在此处转义
^
以使其成为文字字符,还需要转义
点以使其被视为文字字符
sed 's/\^1\.4/*/' Input_file
或者根据OP的评论,使其动态化尝试:
sed 's/\^[0-9]+\.[0-9]+/*/' Input_file
另外,如果您在文件的第21行执行此操作,请像您在尝试中一样使用21s
。此代码将仅替换^1.4的第一次出现,如果您要替换所有出现的代码,请使用g
(全局替换)选项替换上述代码
我没有使用
-I
选项(对输入文件本身进行就地更新),一旦您对结果满意,请在上述代码中使用sed-I
选项。对于您显示的示例,请尝试以下操作。您需要在此处转义^
以使其成为文字字符,还需要转义
点以使其被视为文字字符
sed 's/\^1\.4/*/' Input_file
或者根据OP的评论,使其动态化尝试:
sed 's/\^[0-9]+\.[0-9]+/*/' Input_file
另外,如果您在文件的第21行执行此操作,请像您在尝试中一样使用21s
。此代码将仅替换^1.4的第一次出现,如果您要替换所有出现的代码,请使用g
(全局替换)选项替换上述代码
我没有使用
-I
选项(对输入文件本身进行就地更新),一旦您对结果满意,就在上面的代码中使用sed-I
选项。对文件进行更改时,我更喜欢文件编辑器ed
而不是流编辑器sed
(ed
是标准的,sed-i
不是,不同的版本有不同的怪癖,经常会咬到这里的人)
ed-s input.txt在对文件进行更改时,我更喜欢文件编辑器ed
而不是流编辑器sed
(ed
是标准的,sed-I
不是,不同的版本有不同的怪癖,经常会伤害到这里的人)
ed-s input.txt^
是regexp中的起始锚点,必须转义\^
,还必须转义
,这意味着任何字符如果这是版本依赖项,例如在package.json文件中,版本中可能有多个点:“@babel/cli”:“^7.2.3”
^
是regexp中的起始锚点,必须转义\^
,也必须转义
,这意味着任何字符如果这是版本依赖项,例如在package.json文件中,版本中可能有多个点:“@babel/cli”:“^7.2.3”
@Snk,哦,好的,试试sed的s/\^[0-9].[0-9]/*/“输入\u文件
,然后告诉我这是否对您有帮助?+就像sed使用的BRE中的文字一样。@Snk,哦,好的,试试sed的/\^[0-9]\.[0-9]/*/‘输入文件
,然后告诉我这是否有帮助?+只是sed使用的BRE中的一个字面意思。我知道抱怨非标准的sed
扩展名,然后给出使用非标准ed
扩展名的答案,是的。我知道抱怨非标准seded
扩展的答案,是。