我正在尝试匹配#key = *
之类的模式,并使用sed和正则表达式将其替换为key = 1
。
这是我的命令:
sed -r -e "s/#\s*key\s*=\s*[^\n]*/key\s*=\s*1/g /tmp/test.txt"
但它给了我错误:
sed: -e expression #1, char 38: unknown option to `s'
这是什么意思,我该如何解决?
答案 0 :(得分:1)
输入文件名不是\s
的一部分,它应该是一个单独的参数。
此外,输出中的(...)
不会创建空格,但您可以使用\N
从输入中捕获空白,并使用相应的sed -r -e 's/#(\s*)key(\s*)=(\s*).*/key\2=\31/g' /tmp/test.txt
输出。
{{1}}
答案 1 :(得分:0)
$ echo '#key = *' | sed -r -e 's/#\s*key\s*=\s*[^\n]*/key = 1/'
key = 1
这是你期望的吗?