私は多くの多言語テキストファイルを解析するためにPerlを使用しています。 2つのモード間でテキストを変更する必要があります。
希望の変更
たとえば、元の英語版は次のようになります。
\label{whatever}
\ref{whatever}
\autoref{whatever}
{
ただし、との間には}
適切なISO 639言語コードを追加する必要があります。
\label{whatever_de}
\ref{whatever_de}
\autoref{whatever_de}
黒仮説
次のファイルが提供されます。
da/myfile_da.tex
de/myfile_de.tex
el/myfile_el.tex
en/myfile_en.tex
各ファイルには以下が含まれます。
\label{some_nice_thing}
\ref{some_nice_thing}
\autoref{some_nice_thing}
私の方法
フォルダ名をISO 639コードとして使用し、単純なファイルループを作成できます。以下は、変更された行を端末コンソールに簡単に印刷する必要があります。私は例えば、私が得た特定の結果を説明しようとします。
布材:\\label\{.*?\}
for f in *; do if [[ -d $f ]]; then perl -ne "print if s/(\\label\{.*?)\}/\1_$f\}/g" $f/myfile_$f.tex; fi; done
動作しない:\\ref\{.*?\}
for f in *; do if [[ -d $f ]]; then perl -ne "print if s/(\\ref\{.*?)\}/\1_$f\}/g" $f/myfile_$f.tex; fi; done
動作しない:\\autoref\{.*?\}
for f in *; do if [[ -d $f ]]; then perl -ne "print if s/(\\autoref\{.*?)\}/\1_$f\}/g" $f/myfile_$f.tex; fi; done
すべての場合に適用されgrep -Pr
ます(もちろんグループの削除)。
ベストアンサー1
\\
\
二重引用符で囲みます。\\ref
なり、その後は\ref
実際に存在するようになります。 4つのバックスラッシュを使用してください。\r
ef
for f in *; do
if [[ -d $f ]]; then
perl -ne "print if s/(\\\\ref\{.*?)\}/\1_$f\}/g" $f/SystemRequirements_$f.tex
fi
done
同様に\a
BELL文字()です\x07
。