이 소스 파일이 있습니다 .c :
#include <dir/header1>
#include <dir/header2>
#include <dir/header3>
...
dir 뒤에있는 헤더 만 일치시키고 싶습니다 (예 :) header1
. 나는 이것을한다:
$ sed -En 's/\/(.*)>/\1/p' file.c
그러나 출력됩니다.
#include <dirheader1
, 그래서 줄의 처음부터 일치했지만 /
캐릭터 에서 그룹화하고 싶었습니다 s/\/...
. 그래서 나는 시도했다.
$ sed -En 's/<.*\/(.*)>/\1/p' file.c
둘 다 도움이되지 않았습니다. 그래서 그것을 달성하는 방법?
headerx
에서 s///
명령으로 표시 한 세 줄 중 일부만 추출하려면 원하지 않는 줄의 모든 비트 sed
를 제거 해야합니다 .
원하지 않는 줄의 비트는 #include <dir/
시작 부분 의 초기 문자열과 >
끝 부분 의 마지막 문자열입니다. 이것은 모두 정규 표현식과 일치해야합니다. 그런 다음 초기 문자열과 최종 문자열 사이의 비트에 대해 캡처 그룹을 사용 하여 전체 라인 을 캡처 된 문자열로 바꿉니다.
sed -n 's,.*/\(.*\)>,\1,p' file.c
또는 더 명시 적으로
sed -n 's,^#include <dir/\(.*\)>,\1,p' file.c
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다