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