2017-02-16 32 views
0

斷裂的表達在數行我切割的表達後135個字符和打印每行開始以+或 - 通過命令問題在MacOS,同時通過用sed

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

貓file1的

(-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) 

任何解決方法?

+0

請嘗試放置{1,135}。按照文檔第二個參數可以省略,而不是第一個。看到https://www.gnu.org/software/sed/manual/sed.html#sed-regular-expressions – Himanshu

+0

與此修改它不會破壞線路了..但抱怨是不存在的,但。 –

+0

嘗試'\ /(。\ {1,135 \} \)\([+ - ] \)/ \ 1 \ n \ 2/g'' –

回答

0

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 

>在第二行的開頭是次要的提示,表明單引號字符串尚未關閉。

+0

它聲稱 sed:1:「s /(\(。\)\ {0,135 \} \)\([...」:RE錯誤:圓括號不平衡 我也無法編譯 –

+0

不知何故,我在最初的'(';現在修復了。「之前丟失了反斜線。 – chepner