
sed를 사용하여 bash 스크립트에 대한 일부 정보를 얻으려는 두 줄의 파일이 있습니다.
# File Comment
PrefixForInformation {information to be captured}
중괄호를 포함하지 않고 사이에 정보를 가져와야 합니다. PCRE 정규식이 있거나 다음에서 작동하는 것 같습니다 /{(.*)}/
.\s{([^}]*)
온라인 정규식 101하지만 작동하는 sed 구성으로 넘어갈 수는 없습니다.
답변1
$ sed -n 's/.*{\(.*\)}.*/\1/p' file
information to be captured
작동 원리
-n
이는 명시적으로 요청하지 않는 한 sed가 아무것도 인쇄하지 않도록 지시합니다.
s/.*{\(.*\)}.*/\1/p
이 대체 명령은 두 개의 중괄호 사이에 있는 모든 항목을 그룹 1로 캡처합니다. 전체 라인은 로 표시된 그룹 1로 대체됩니다
\1
. 끝에 있는p
는 일치하는 경우 결과를 인쇄해야 한다고 sed에게 알려줍니다.