2014-05-14 7 views
0

(경우에 : if (나오지 명령을 대체하는 경우 (I가 나오지 명령을 실행 할

내 명령을 if(을 대체 할 나오지 명령은 다음과 같습니다 file1.c이 문자열을 포함

sed 's/if(/if (/g' file1.c >file1.c 

그 교체해야합니다.

문제는 파일의 내용이 삭제됩니다 및 변경이 반영되지 않은 것입니다.

+2

: 먼저 잘립니다 및 평가. 대신'sed -i '...'file'을 사용하여 적절한 위치에서 파일을 교체하거나 다른 파일로 리디렉션하십시오. – fedorqui

답변

0

두 가지 접근 방식을 시도 할 수 있습니다.

기존 파일을 업데이트하려면 : 다른 파일에 수정 된 파일을 저장하려면

sed -i 's/if(/if (/g' file1.c 

을 :

sed 's/if(/if (/g' file1.c > file2.c 
당신은 같은 파일을 리디렉션 할 수 없습니다
+0

솔루션이 이치에 맞지 않습니다. 또한 다른 답변을 게시하는 이유는 무엇입니까? – fedorqui

+0

파일 내용을 편집하는 데 2 ​​가지 방법을 제안했습니다 ... 첫 번째 방법은 기존 내용을 편집하는 것입니다. (덮어 쓰기) 두 번째 방법은 수정 된 파일입니다. – angel

+0

첫 번째 편집 중이 아니며 화면에 표시됩니다. 두 번째는 불필요한 파이프를 가지고 있습니다. 그냥'sed '여야합니다 ...'file1.c> file2.c' – fedorqui

0

소개 예 :

sed -re 's/if(/if (/g' 
+0

아닙니다. 현재 명령이 작동합니다. 이는 (재개) 방향의 문제 일뿐입니다. – fedorqui

+0

감사합니다. :-) – PKSA