2012-01-08 5 views
1

OpenGL 헤더 gl.h 및 기타 많은 헤더에는 함수 정의가 여러 행에 걸쳐 있습니다. 다음은 그 예입니다.sed 정규식을 사용하여 여러 줄에 걸쳐 작성된 함수 원형을 정렬합니다.

GLAPI void glCopyTexSubImage2D(GLenum target, GLint level, 
           GLint xoffset, GLint yoffset, 
           GLint x, GLint y, 
           GLsizei width, GLsizei height); 

정규식을 사용하여 sed와 함께 사용할 수 있습니다.

GLAPI void glCopyTexSubImage2D(GLenum target, GLint level,GLint xoffset, GLint yoffset, GLint x, GLint y,GLsizei width, GLsizei height); 

GLAPI 토큰이 OpenGL을 특정, 그래서 솔루션이 더 문맥에서 사용될 수 있도록 차라리 그것을 무시 것 : 위의 예는 될 것입니다.

+1

이를위한 코드 재 형식화 도구. – fge

+0

방금 ​​Astyle을 보았지만 그렇게 할 수는 없습니다. – qdii

답변

2

간단한 sed 한 줄은 당신을 위해 작동합니다 -

sed ':a;{N;s/\n */ /};ba' INPUT_FILE 

테스트 :

[jaypal:~/Temp] cat temp 
GLAPI void glCopyTexSubImage2D(GLenum target, GLint level, 
           GLint xoffset, GLint yoffset, 
           GLint x, GLint y, 
           GLsizei width, GLsizei height); 

[jaypal:~/Temp] sed ':a;{N;s/\n */ /};ba' temp 
GLAPI void glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); 
2

당신은 ex 사용할 수 있습니다

$ echo -e 'g/([^;]*$/,/);$/j\n%p' | ex gl.h 
  • /([^;]*$/은 경기 시작
  • /);$/ 경기 종료

당신이 제자리에서 편집하기에 %p을 변경하려면 w.

1

이 당신을 위해 작동 할 수 있습니다 : 당신은 더 나은 사용을 거라고

sed '/.*(.*/,/.*);$/{H;//{x;s/\n */ /gp};d}' file 
관련 문제