2017-02-16 9 views
0

を通じて複数の行に式を破壊しながら、私は135個の文字の後に式を切断し、+で始まるそれぞれの行を印刷したりしています - コマンドで問題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}を入れてみてください。ドキュメントごとに2番目の引数は省略でき、最初の引数は省略できます。 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

関連する問題