如何用sed匹配和替换键/值表达式



我正在尝试匹配类似#key = *的模式,并使用sed和正则表达式将其替换为key = 1

这是我的命令:

sed -r -e "s/#s*keys*=s*[^n]*/keys*=s*1/g /tmp/test.txt"

但它给了我一个错误:

sed: -e expression #1, char 38: unknown option to `s'

这意味着什么,我该如何解决?

输入文件名不是-e的一部分,它应该是一个单独的参数。

此外,输出中的s不会创建空白,但您可以使用(...)从输入中捕获空白,并使用相应的N将其输出。

sed -r -e 's/#(s*)key(s*)=(s*).*/key2=31/g' /tmp/test.txt
$ echo '#key = *' | sed -r -e 's/#s*keys*=s*[^n]*/key = 1/'
key = 1

这是你所期望的吗?

最新更新