파일의 문자열을 재배열/재구성하기 위해 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
사용하여 단어의 일부로 포함된 것이 아니라 " 단어" 자체인 경우에만 변경되도록 합니다 .\<
\>
old
new
cold
$ 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