데이터
7. Masi is the same as
\begin{enumerate}
A
B
ABC ha lorem
\end{enumerate}
1. ABC is
\begin{enumerate}
P
B
Lorem maam
\end{enumerate}
나는 ~가되고 싶다
7. Masi is the same as
\begin{enumerate}
\item A
\item B
\item ABC ha lorem
\end{enumerate}
1. ABC is
\begin{enumerate}
\item P
\item B
\item Lorem maam
\end{enumerate}
내 시작 정규식은 다음을 기반으로 합니다.답변
perl -000pe s/\n/\n\\begin{enumerate}\n [A-Za-z1-9]* \end{enumerate}/ ... [problem here!] masi.tex
어디
- -000 : 각 질문이 한 줄로 처리되도록 "줄"을 두 개의 연속 줄 바꿈(\n\n)으로 정의하는 Perl의 단락 모드를 활성화합니다.
- -pe : 입력 파일의 각 라인을 읽어 -e(-p)로 전달된 스크립트를 적용한 후 인쇄합니다.
\item
일치하는 각 줄의 시작 부분을 .My 의사 코드 로 바꾸고 싶습니다 .문제는 여기 코드에 있습니다
s/\n/\project/g
열거형 컨텍스트에서 항목을 적용합니다.
어떻게
답변1
당신은 사용할 수 있습니다 ..
또는범위운영자는 교체를 시작/끝 부분으로 제한합니다.
while (<DATA>) {
if ( /\\begin/ .. /\\end/ ) {
s/^(?!\\)/\\item /;
}
print;
}
__DATA__
7. Masi is the same as
\begin{enumerate}
A
B
ABC ha lorem
\end{enumerate}
1. ABC is
\begin{enumerate}
P
B
Lorem maam
\end{enumerat
명령줄 스크립트를 선호하는 경우:
perl -ne 'if (/\\begin/../\\end/) {s/^(?!\\)/\\item /};print'
또는 암시적으로 더 짧은 것을 사용하십시오 print
.
perl -pe 'if (/\\begin/../\\end/) {s/^(?!\\)/\\item /}'
이것은 (?!...)
부정적인 전달 주장입니다.
답변2
또 다른 Perl
해결책:
$ perl -pe '
if (/\\begin/../\\end/) {
next if /\\begin/ || /\\end/;
s/^/\\item /;
}
' file
7. Masi is the same as
\begin{enumerate}
\item A
\item B
\item ABC ha lorem
\end{enumerate}
1. ABC is
\begin{enumerate}
\item P
\item B
\item Lorem maam
\end{enumerate}
설명하다
if (/\\begin/../\\end/)
: 줄 구분 기호는 로 시작\begin
하고 끝납니다\end
.next if /\\begin/ || /\\end/
: 시작과 끝은 필요 없으니 생략하세요.s/^/\\item /
: 각 줄의 시작 부분을 원하는 패턴으로 바꿉니다.-p
perl
옵션을 사용하면 각 줄을 처리한 후 인쇄됩니다 .
답변3
플래그를 사용하세요. enumerate를 입력할 때 1로 설정되고 끝에서 0으로 지워집니다. 플래그 설정 시 항목 삽입:
perl -pe '$inside = 0 if /\\end{enumerate}/;
print "\\item " if $inside;
$inside = 1 if /\\begin{enumerate}/;
' input.tex
인쇄하기 전에 끝을 확인하므로 \item
끝 줄 앞에는 추가되지 않습니다.