Hi Caroline, That works! Thank you so much. Removing the if condition and using a more specific regex substitution changed only the field I wanted and left the other alone. Oddly, if I say I want to do this to the "1st" field it still shows the problematic behavior (both fields are modified, the second receives a copy of the first's $u subfield), but if I set it to "all" then only the first field is modified. I will submit a bug report for that.
Best, ERIC PHETTEPLACE Systems Librarian, Libraries (he/him) [email protected] *CCA is situated on the traditional unceded lands of the **Chochenyo and Ramaytush Ohlone** peoples.* Black-owned bookstores in Oakland: Ashay by the Bay <https://ashaybythebay.com/>, Marcus Books <https://www.facebook.com/marcus.books/> :(){ :|: & };: On Wed, Aug 9, 2023 at 6:22 AM Caroline Cyr La Rose < [email protected]> wrote: > Hi Eric, > > Did you try without the if? The regex replace should only replace the > example.com links and leave the other ones alone. > > I tried in 23.05.02 with > > Copy and replace All field(s) 856 u to 856 u RegEx s/^https?:\/\/ > example.com/https://proxy.cca.edu/url?=https://example.com/ > > the record was > > 856 _ _ ‡uhttps://example.com‡yLink to proxy > 856 _ _ ‡uhttps://www.cca.edu‡yLink to retain > > the modified record was > > 856 _ _ ‡uhttps://proxy.cca.edu/url?=https://example.com‡yLink to proxy > 856 _ _ ‡uhttps://www.cca.edu‡yLink to retain > > You could write a bug report for the "1st" vs "every" thing. Personally, > I've never understood the "1st" option. It's probably because as you said > it's not necessarily the first visually. And I'm not sure if the first > would always be the one you need to change in all the records, records > being so different from each other. > > Best of luck! > > Caroline > On 2023-08-08 18:39, Eric Phetteplace wrote: > > Hi Caroline, > > Yes, they do happen to have different domains, one I want to preserve and > one I want to proxy. Thank you for the suggestion! Using a more qualified > regex seemed like it should work, but Koha still clobbers the second 856$u > subfield. Here's a modified example: > > Record > 245 _ _ ‡aExample > 856 4 0 ‡uhttps://example.com‡yLink to proxy > 856 4 0 ‡uhttps://www.cca.edu‡yLink to retain > > MARC modification > Copy and replace 1st field(s) 856 u to field 856 u > Regex ✅ s/^https?://example\.com/ > https://proxy.cca.edu/url?=https://example.com/ > If field 856 u matches m/https://example.com/ Regex ✅ > > Output record > 245 _aExample > 856 40 _uhttps://proxy.cca.edu/url?=https://example.com > _yLink to proxy > 856 40 _uhttps://proxy.cca.edu/url?=https://example.com > _yLink to retain > > As the "if" condition cannot stop the second field from being modified, > the regex also cannot. Koha seems to take the first 856, check it against > the if condition, and then copies the modified $u subfield to all other > instances of 856$u no matter what is configured in the modification > template. Again, I tested with both "all" and "1st" 856 fields and the > result was the same. Saying "1st" 856 still modifies both 856s. > > So am I stuck writing a bug report? There's no way to modify only one of a > set of the same fields even with if conditions? I would expect other > templates dealing with commonly repeated fields like subject headings to > run into trouble then. Maybe only the "copy and replace" action has > problems so fewer templates are affected? > > Best, > > ERIC PHETTEPLACE Systems Librarian, Libraries (he/him) > > [email protected] > > > *CCA is situated on the traditional unceded lands of the **Chochenyo and > Ramaytush Ohlone** peoples.* > > Black-owned bookstores in Oakland: Ashay by the Bay > <https://ashaybythebay.com/>, Marcus Books > <https://www.facebook.com/marcus.books/> > > :(){ :|: & };: > > > On Mon, Aug 7, 2023 at 6:40 AM Caroline Cyr La Rose < > [email protected]> wrote: > >> Hi Eric, >> >> This has been my experience as well. I haven't found a way to modify >> only one field when there are more that one of the same tag in the same >> record. >> >> Are the links you are trying to change all the same domain? Or a couple >> of different domains? If so, you could match the regex on a longer part >> of the URL e.g. >> s/^ >> https://some-online-resource.com/https://proxy.cca.edu/url?=https://some-online-resource.com >> >> You can have many options in one modification template, so you can have >> many "copy and replace" for various resources. Or you can do it by >> batch. The latter is usually what I've done in the past: make a report >> to have the URLs matching some-online-resource.com, batch modify those. >> Then change the modification template, change the report to have the >> URLs another-online-resource.com and batch modify those records, etc. >> >> Good luck! >> >> Caroline >> >> On 2023-08-04 11:31, Eric Phetteplace wrote: >> > Hi collective wisdom, >> > >> > I'm running into a MARC modification template problem and I can't tell >> if >> > I'm missing something or there's a bug/limitation. I know I could >> > accomplish these edits with MARCEdit or a script, but I was hoping to >> use >> > Koha's tools. >> > >> > I have a record with two 856 fields with links, I want to apply our >> proxy >> > server prefix to one link but not the other. That seems to be >> impossible; >> > Koha clobbers the second link with a copy of the first. Here's a minimal >> > example. >> > >> > Record >> > 245 _ _ ‡aExample >> > 856 4 0 ‡uhttps://example.com‡yLink to proxy >> > 856 4 0 ‡uhttps://www.cca.edu‡yLink to retain >> > >> > MARC modification >> > Copy and replace 1st field(s) 856 u to field 856 u Regex ✅ s/^http/ >> > https://proxy.cca.edu/url?=http/ >> > If field 856 u matches m/https://example.com/ Regex ✅ >> > >> > Output record >> > 245 _aExample >> > 856 40 _uhttps://proxy.cca.edu/url?=https://example.com >> > _yLink to proxy >> > 856 40 _uhttps://proxy.cca.edu/url?=https://example.com >> > _yLink to retain >> > >> > This happens whether I set the modification template to use the "1st" or >> > "every" 856 field. I don't understand why the second 856 is touched at >> > all, since it does not meet the "if" condition, much less why instead of >> > receiving its own link proxied it gets the first 856 URL proxied. >> > >> > Based on a few tests, it also seems like the "1st" field with respect to >> > modification actions is not always the one that's visually first when I >> > edit a record. I tried a set of three actions which 1) copied the first >> > field to another, unused field, 2) modified it there, and then 3) >> copied it >> > back, but Koha copied the second field instead. >> > >> > Best, >> > >> > ERIC PHETTEPLACE Systems Librarian, Libraries (he/him) >> > >> > [email protected] >> > >> > >> > *CCA is situated on the traditional unceded lands of the **Chochenyo and >> > Ramaytush Ohlone** peoples.* >> > >> > Black-owned bookstores in Oakland: Ashay by the Bay >> > <https://ashaybythebay.com/>, Marcus Books >> > <https://www.facebook.com/marcus.books/> >> > >> > :(){ :|: & };: >> > _______________________________________________ >> > >> > Koha mailing listhttp://koha-community.org >> > [email protected] >> > Unsubscribe:https://lists.katipo.co.nz/mailman/listinfo/koha >> -- >> Logo inLibro <https://inLibro.com> Caroline Cyr-La-Rose >> Bibliothécaire | Responsable de produit >> >> T 833-INLIBRO (465-4276) <tel:833-465-4276> <833-465-4276>, poste 221 >> C [email protected] >> >> www.inLibro.com <https://inLibro.com> >> _______________________________________________ >> >> Koha mailing list http://koha-community.org >> [email protected] >> Unsubscribe: https://lists.katipo.co.nz/mailman/listinfo/koha >> > -- > [image: Logo inLibro] <https://inLibro.com> Caroline Cyr-La-Rose > Bibliothécaire | Responsable de produit > > T 833-INLIBRO (465-4276) <833-465-4276>, poste 221 > C [email protected] > > www.inLibro.com <https://inLibro.com> > _______________________________________________ Koha mailing list http://koha-community.org [email protected] Unsubscribe: https://lists.katipo.co.nz/mailman/listinfo/koha

