gpt4 book ai didi

linux - 用空格替换行,用包含空格的字符串替换反斜杠

转载 作者:IT王子 更新时间:2023-10-29 00:21:05 25 4
gpt4 key购买 nike

我想替换以下行:

--memory 20g \

--memory 100g \

实际上它应该替换--memory之后的任何数字。以下是我所拥有的,但无法获得预期的结果。

sed -i -E -- "s/\b--memory.*/--memroy 100g \/g"  a.txt

最佳答案

你不需要这里的扩展正则表达式支持(-E),POSIX-ly 你可以像下面那样做。这个想法是你需要双重转义元字符 \ 以使其成为文字

sed 's/--memory \(.*\) \\/--memory 100g \\/g' a.txt

或者如果您确定它一直都是 20g,请直接使用该字符串。

sed 's/--memory 20g \\/--memory 100g \\/g' a.txt

使用 \(.*\) 的一个优点是允许您替换该位置可能出现的任何内容。 .* 是匹配任何内容的贪婪表达式,在 POSIX sed(基本正则表达式)中,您需要将捕获的组转义为 \(.*\) 而如果您在启用 -E 标志的情况下执行相同操作(在 GNU/FreeBSD sed 上),您可以只执行 (.*)。如果你想匹配确切的行并且不让 sed 在你不需要的地方替换文本,也可以使用正则表达式 anchor ^, $需要。与ERE相同的操作

sed -E 's/--memory (.*) \\/--memory 100g \\/g' file

关于linux - 用空格替换行,用包含空格的字符串替换反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50559897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com