希望の変更

希望の変更

私は多くの多言語テキストファイルを解析するために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つのバックスラッシュを使用してください。\ref

for f in *; do
    if [[ -d $f ]]; then
        perl -ne "print if s/(\\\\ref\{.*?)\}/\1_$f\}/g" $f/SystemRequirements_$f.tex
    fi
done

同様に\aBELL文字()です\x07

おすすめ記事