원래 Windows에서 개발된 일부 C 소스 코드가 있습니다. 이제 Linux에서 작동하도록 만들고 싶습니다. 다음과 같이 Linux 형식으로 변경해야 하는 포함 지시문이 많이 있습니다.
#include "..\includes\common.h"
.h
모든 파일을 반복하고 .c
, 포함 지시문을 찾고, 백슬래시를 슬래시로 바꾸는 명령줄을 찾고 있습니다 .
답변1
find
+GNUsed
해결책:
find . -type f -name "*.[ch]" -exec sed -i '/^#include / s|\\|/|g' {} +
"*.[ch]"
- 확장자가 있는 파일에 대한 와일드카드 검색.c
또는.h
-i
sed
: 파일을 제자리에서 편집할 수 있는 GNU 확장으로, 백업이 필요하지 않습니다. FreeBSD/macOSsed
에도 비슷한 확장이 있지만 구문은-i ''
다릅니다./^#include /
- 패턴으로 시작하는 줄을 만나거나 일치하는 경우:#include
s|\\|/|g
\
-모든 백슬래시를 슬래시로 바꿉니다/
( 리터럴 표현을 위해\
백슬래시로 이스케이프됨\
).
답변2
나는 다음 명령으로 그것을했다
입력.txt
#include "..\includes\common.h"
주문하다:
sed 's/\\/\//g' input.txt
산출
#include "../includes/common.h"