foo
어떤 문자열이든 하자 . 파일에서 모든 항목을 검색해야합니다.
\LeftLabel{foo}
각 발생을
\LeftLabel{\textsf{foo}}
그러나 foo가 $
문자로 시작하지 않는 경우에만 . 어떻게?
이 테스트 파일을 살펴 보겠습니다.
$ cat file
\LeftLabel{foo}
\LeftLabel{$foo}
LeftLabel{foo}
이제 대체 해 보겠습니다.
$ sed -E 's|\\LeftLabel\{([^$}][^}]*)\}|\\LeftLabel{\\textsf{\1}}|g' file
\LeftLabel{\textsf{foo}}
\LeftLabel{$foo}
LeftLabel{foo}
의 대체 명령 sed
처럼 보이는 s|old|new|g
경우 old
정규 표현식은 new
그 자리에 대체 무엇이며, 마지막이 g
아니라 첫 번째 줄에 이러한 모든 항목을 대체하기 위해 sed를 알려줍니다.
명령에서 old
부품은 다음과 같습니다.
\\LeftLabel\{([^$}][^}]*)\}
이 경기 \LeftLabel{
어떤 이외의 문자 다음에 $
나 }
입니다 [^$}]
되지 않은 문자의 수에 따라, }
이다, [^}]*
a로 이어 }
. 이러한 문자 중 일부는 앞에 백 슬래시가 있어야 sed가 정규식 문자가 아닌 일반 문자로 처리합니다. 또한 중괄호 안의 문자는 괄호로 묶여 있습니다. 괄호는 sed에게 내부 내용을 그룹 1로 저장하도록 지시하는 정규식 활성 문자입니다 . 명령 부분 \1
에서 이러한 문자를 참조 할 수 있습니다 new
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다