linux-l: suchen/ersetzen
Robin S. Socha
robin at socha.net
Sa Mär 24 16:14:29 CET 2001
No-brainer, aber mein Kopf tut weh.
Falsch:
\label{sec:\index{phonology}phonology}
Richtig:
\label{sec:phonology}
Dasselbe muss mit \chapter und seinen Freunden passiern.
Vielleicht ist auch mein Script Scheiße, weil ohne sanity check. *sigh*
#!/usr/bin/perl -w
use strict;
my $line; # Eingelesene Zeile
# Datei mit Indexersetzungen einlesen
my %index; # Hash mit dem Index
open IN, "SubjectIndex-geordnet.txt" or die "Kann index nicht lesen: $!";
while( $line = <IN>){
chomp $line;
$line =~ m/(.*)\s+(\S+)\s*$/;
$index{$1} = $2;
print "$1 ; $2\n";
}
foreach (keys %index){
print "$_ -> " . $index{$_} . "\n";
}
# Regexp bilden
my $regexp;
foreach (keys %index){
$regexp .= '(\b' . quotemeta($_) . '\b)|';
}
$regexp = substr $regexp, 0, -1;
#print $regexp; exit;
# Über alle *.tex Dateien iterieren
my $file;
while ($file = <*.tex>){
undef $/;
print "$file\n";
open IN, $file or die "Kann Datei $file nicht öffnen: $!";
$line = <IN>;
$line =~ s/$regexp/'\index{' . $index{$&} . '}'.$&/eog;
open OUT, ">$file.neu" or die "Kann neues $file nicht schreiben: $!";
print OUT $line;
}
SubjectIndex-geordnet sieht so aus:
agglutinating languages agglutinating!languages
agglutinative language agglutinative!language
^ TAB
DANKE!
--
Robin S. Socha <http://socha.net/>
Note to experienced users: Please don't encourage anti-support behavior.
Don't try to answer questions from users who don't provide the necessary
information. Guessing what they did is an incredible waste of time. (DJB)
Mehr Informationen über die Mailingliste linux-l