Regex 通过sed将表达式分成几行时在macos上出现问题

Regex 通过sed将表达式分成几行时在macos上出现问题,regex,sed,sh,Regex,Sed,Sh,我在135个字符后剪切一个表达式,并通过命令以+或-开头打印每行 cat file1 | tr -d '\n' > file2 sed 's/\(\(.\)\{,135\}\) \([\+\-]\)/\1\n\3/g' file2 > file3 cat文件1 (-128*r1*T6*y*(22*y^3 + 32*y^2*(-1 + z) + 33*y*(-1 + z)^2 + 12*(-1 + z)^3))/ 3 - (128*r1*T2*y*(11*y^3 - 2*y^2*

我在135个字符后剪切一个表达式,并通过命令以+或-开头打印每行

cat file1 | tr -d '\n' > file2
sed 's/\(\(.\)\{,135\}\) \([\+\-]\)/\1\n\3/g' file2 > file3
cat文件1

(-128*r1*T6*y*(22*y^3 + 32*y^2*(-1 + z) + 33*y*(-1 + z)^2 + 12*(-1 + z)^3))/
  3 - (128*r1*T2*y*(11*y^3 - 2*y^2*z - 3*y*z^2 - 12*z^3))/3 +
 (128*r1*T3*z*(12*y^3 + 3*y^2*z + 2*y*z^2 - 11*z^3))/3 -
 2816*r1*T1*(y^4 + 2*y^3*(-1 + z) + 3*y^2*(-1 + z)^2 + 2*y*(-1 + z)^3 +
  (1 - z + z^2)^2) + (256*r1*T5*(11 + 11*y^4 + 14*z - 14*y^3*z - 36*z^2 +
 44*z^3 - 22*z^4 - 6*y^2*z*(-7 + 6*z) - 2*y*z*(21 - 36*z + 22*z^2)))/3 +
 (128*r1*T8*(110 + 99*y^4 - 174*z + 261*z^2 - 164*z^3 + 99*z^4 +
  2*y^3*(-82 + 81*z) + 3*y^2*(87 - 172*z + 86*z^2) +
  6*y*(-29 + 86*z - 86*z^2 + 27*z^3)))/3
这在linux上有效,但在mac上不起作用。显示的错误如下所示

sed: 1: "s/\(\(.\)\{,135\}\) \([ ...": RE error: invalid repetition count(s) 

有什么解决方法吗?

BSD
sed
不会用换行符替换
\n
。但是,您可以在字符串中嵌入文字换行符:

$ tr -d '\n' < file1 | sed 's/\(\(.\)\{0,135\}\) \([\+\-]\)/\1\
> \3/g'
(-128*r1*T6*y*(22*y^3 + 32*y^2*(-1 + z) + 33*y*(-1 + z)^2 + 12*(-1 + z)^3))/  3 - (128*r1*T2*y*(11*y^3 - 2*y^2*z - 3*y*z^2 - 12*z^3))/3
+ (128*r1*T3*z*(12*y^3 + 3*y^2*z + 2*y*z^2 - 11*z^3))/3 - 2816*r1*T1*(y^4 + 2*y^3*(-1 + z) + 3*y^2*(-1 + z)^2 + 2*y*(-1 + z)^3 +  (1 - z
+ z^2)^2) + (256*r1*T5*(11 + 11*y^4 + 14*z - 14*y^3*z - 36*z^2 + 44*z^3 - 22*z^4 - 6*y^2*z*(-7 + 6*z) - 2*y*z*(21 - 36*z + 22*z^2)))/3
+ (128*r1*T8*(110 + 99*y^4 - 174*z + 261*z^2 - 164*z^3 + 99*z^4 +  2*y^3*(-82 + 81*z) + 3*y^2*(87 - 172*z + 86*z^2) +  6*y*(-29 + 86*z
- 86*z^2
+ 27*z^3)))/3
$tr-d'\n'\3/g'
(-128*r1*T6*y*(22*y^3+32*y^2*(-1+z)+33*y*(-1+z)^2+12*(-1+z)^3))/3-(128*r1*T2*y*(11*y^3-2*y^2*z-3*y*z^2-12*z^3))/3
+(128*r1*T3*z*(12*y^3+3*y^2*z+2*y*z^2-11*z^3)/3-2816*r1*T1*(y^4+2*y^3*(-1+z)+3*y^2*(-1+z)^2+2*y*(-1+z)^3+(1-z)
+z^2)+(256*r1*T5*(11+11*y^4+14*z-14*y^3*z-36*z^2+44*z^3-22*z^4-6*y^2*z*(-7+6*z)-2*y*z*(21-36*z+22*z^2))/3
+(128*r1*T8*(110+99*y^4-174*z+261*z^2-164*z^3+99*z^4+2*y^3*(-82+81*z)+3*y^2*(87-172*z+86*z^2)+6*y*(-29+86*z
-86*z^2
+27*z^3))/3

第二行开头的
是第二个提示,表示单引号字符串尚未关闭。

请尝试放置{1135}。根据docs,第二个参数可以省略,而不是第一个参数。请看,通过此修改,它不再打断线条。。然而,投诉并不存在。试试
的s/\(.\{1135\}\)\([+-]\)/\1\n\2/g'
,现在它没有越界!!它声称sed:1:“s/(()\{0135\})([…”:RE错误:括号不平衡,我也无法编译。不知何故,我在首字母
)之前丢失了反斜杠;现已修复。