Regex sed正则表达式替换过多字符?

Regex sed正则表达式替换过多字符?,regex,sed,Regex,Sed,我对sed使用以下命令:sed s/1[^\.]/2/g test 我想用2替换每个1,后面跟一个点的1除外。它很好用 但是在我的文件中有一个{{1e}}被{{2}替换 sed为什么要删除e 附言:我是正则表达式的初学者,所以这可能是一个明显的错误 在1之后捕获字符,并在2之后再次插入: sed 's/1\([^.]\)/2\1/g' test 唯一的问题是行末尾的1。您可以将其替换为2 s/1$/2/ 捕获1之后的字符,并将其再次插入2之后: sed 's/1\([^.]\)/2\1/g'

我对sed使用以下命令:
sed s/1[^\.]/2/g test

我想用2替换每个1,后面跟一个点的1除外。它很好用

但是在我的文件中有一个
{{1e}}
{{2}
替换

sed为什么要删除
e


附言:我是正则表达式的初学者,所以这可能是一个明显的错误

1
之后捕获字符,并在
2
之后再次插入:

sed 's/1\([^.]\)/2\1/g' test
唯一的问题是行末尾的
1
。您可以将其替换为
2

s/1$/2/

捕获
1
之后的字符,并将其再次插入
2
之后:

sed 's/1\([^.]\)/2\1/g' test
唯一的问题是行末尾的
1
。您可以将其替换为
2

s/1$/2/

我认为sed将其解释为“将以下2个字符替换为“2”。(1后跟除“.”以外的任何字母)。我也是初学者,因此不太确定实际的修复方法是什么。您的正则表达式匹配两个字符,第一个是“1”,第二个是whatevere,只是不是“;”您应该在“1”之后使用捕获子模式“并将其包含在替换模式中。我认为sed将其解释为“将以下2个字符替换为“2”。(1后跟除“.”以外的任何字母)。我也是初学者,因此不太确定实际的修复方法是什么。您的正则表达式匹配两个字符,第一个是“1”,第二个是任意字符,只是不匹配。”。"; 您应该在“1”之后使用捕获子模式,并将其包含在替换模式中。谢谢您的帮助!我在行尾没有1,所以这不会是一个问题:)
sed's/1\([^.]\\\\\\$\)/2\1/g'测试也会满足行尾条件。注意:我不认为字符类中的
需要反斜杠。假设我需要添加以下条件,不要将
1
后跟
em
p
替换,但我想替换后跟
e
的那些,我尝试了
sed's/1\([^(em |.\124; p)])/$i\\1/g'测试
,但后面跟着
e
的测试不会被替换。谢谢您的帮助!我在行尾没有1,所以这不会是一个问题:)
sed's/1\([^.]\\\\\\$\)/2\1/g'测试也会满足行尾条件。注意:我不认为字符类中的
需要反斜杠。假设我需要添加以下条件,不要将
1
后跟
em
p
替换,但我想替换后跟
e
的那些,我尝试了
sed's/1\([^(em |.\124; p)])/$i\\1/g'测试
,但后面跟着
e
的测试不会被替换。