X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=marc_cleanup;h=e79180ac2d2f8a37fe4c775ba4c5645ed1db2b85;hp=e0c20a781afd6f13c10402f017df98f913e9e8cf;hb=5a192db46cdadef98017b1b52acfc09946561188;hpb=7a1a4928f4f4f7786f30100c58f2b942227a9a49 diff --git a/marc_cleanup b/marc_cleanup index e0c20a7..e79180a 100755 --- a/marc_cleanup +++ b/marc_cleanup @@ -115,7 +115,7 @@ while ( buildrecord() ) { next; } } - # subfields can't be non-alphanumeric + # subfields can't be larger than 1 char (technically you could make the MARC format accomodate that:) if ($record[$ptr] =~ /{'force-utf8'}) { + if ($record[$ptr] =~ m|(.........).(.+)|) { + $record[$ptr] = "$1a$2\n"; + } + } if ($record[$ptr] =~ m|(.+?)c/code="c">/; $record[$ptr] =~ s/code=" ">\$/code="c">\$/; + + if ($c->{'fix-subfield'}) { + $record[$ptr] =~ s/code="&">/code="$c->{'fix-subfield'}">/; + $record[$ptr] =~ s/code="\P{IsAlnum}">/code="$c->{'fix-subfield'}">/; + $record[$ptr] =~ s/code="">/code="$c->{'fix-subfield'}">/; + } } return 0; } @@ -615,6 +626,8 @@ sub initialize { 'renumber-subfield|rs=s', 'original-tag|ot=i', 'original-subfield|os=s', + 'fix-subfield|fs=s', + 'force-utf8', 'script', 'no-strip9', 'trashfile|t=s', @@ -678,13 +691,17 @@ Options and renumbering is in effect, an old-to-new mapping file (old2new.map) will be generated. - --autoscrub -a Automatically remove non-numeric tags in data - --nocollapse -n Don't compress records to one line on output - --no-strip9 Don't autoremove 901/903 tags in data - --trashfile -t File containing trash tag data (see --trashhelp) - - --fullauto No manual edits. All problematic records dumped to - exception file. + --force-utf8 Rewrite each record so that they describe themselves as + UTF-8 encoded + --autoscrub -a Automatically remove non-numeric tags in data + --fix-subfield -fs Subfield code to use in place of non-alphanumeric + or empty subfield codes + --nocollapse -n Don't compress records to one line on output + --no-strip9 Don't autoremove 901/903 tags in data + --trashfile -t File containing trash tag data (see --trashhelp) + + --fullauto No manual edits. All problematic records dumped to + exception file. HELP exit;