sed를 사용하여 코드 리팩터링

sed를 사용하여 코드 리팩터링

파일의 문자열을 재배열/재구성하기 위해 sed 스크립트를 작성하는 방법은 무엇입니까?

내 파일의 내용은 다음과 같습니다.

    for(int i=0; i<old(a, 10); i++)
    {
      sum += old(c*c, i*a)
    }

수정된 콘텐츠를 다음과 같이 만들고 싶습니다.

    for(int i=0; i<new(10,0,a); i++)
    {
      sum += new(i*a, c*c)
    }

답변1

다음은 GNU에 적용됩니다. 단어 경계 표시 를 sed사용하여 단어의 일부로 포함된 것이 아니라 " 단어" 자체인 경우에만 변경되도록 합니다 .\<\>oldnewcold

$ sed -e 's/\<old\>/new/g' foo.c 
    for(int i=0; i<new(a, 10); i++)
    {
      sum += new(c*c, i*a)
    }

-i표준 출력으로 인쇄하는 대신 파일을 변경하려면 GNU sed의 옵션을 사용하십시오.

경고하다: 이 sed스크립트는 변경됩니다.모두/\<old\>/소스 파일에서 발생합니다. 이는 변경하려는 것보다 훨씬 더 많을 수 있습니다.

답변2

GNU sed:

/bin/sed -ire \
 's!\<old\(([^)]+), *([^) ][^)]*)\)!new(\2, \1)!g' \
 *.c </dev/null

관련 정보