백슬래시를 큰따옴표 안의 슬래시로 바꿉니다.

백슬래시를 큰따옴표 안의 슬래시로 바꿉니다.

원래 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
  • -ised: 파일을 제자리에서 편집할 수 있는 GNU 확장으로, 백업이 필요하지 않습니다. FreeBSD/macOS sed에도 비슷한 확장이 있지만 구문은 -i ''다릅니다.
  • /^#include /- 패턴으로 시작하는 줄을 만나거나 일치하는 경우:#include
  • s|\\|/|g\-모든 백슬래시를 슬래시로 바꿉니다 /( 리터럴 표현을 위해 \백슬래시로 이스케이프됨 \).

답변2

나는 다음 명령으로 그것을했다

입력.txt

#include "..\includes\common.h"

주문하다:

 sed 's/\\/\//g' input.txt

산출

#include "../includes/common.h"

관련 정보