For at ændre forfattertypen i en XML-fil, der er placeret i /home/user/app/xmlfiles
, til 'Local' for <author>
tags inden for <fiction>
tags med attributten type='b'
, kan du bruge en kombination af Unix shell kommandoer og sed
eller awk
. Her er en trin-for-trin guide:
Du kan bruge sed
til at foretage denne ændring. Følgende kommando vil gøre arbejdet:
sed -i '/]*type="b"[^>]*>/,/<\/fiction>/ s/[^<]*<\/author>/Local<\/author>/g' /home/user/app/xmlfiles/yourfile.xml
Forklaring:
-i
: Redigerer filen in-place.'/]*type="b"[^>]*>/,/<\/fiction>/ s/[^<]*<\/author>/Local<\/author>/g'
: Dette mønster søger inden for <fiction>
tags med attributten type="b"
og erstatter indholdet af <author>
tags med 'Local'./home/user/app/xmlfiles/yourfile.xml
: Stien til din XML-fil.Alternativt kan du bruge awk
til at opnå det samme resultat:
awk 'BEGIN { FS=OFS="" } /]*type="b"[^>]*>/ { in_fiction=1 } in_fiction && /<\/fiction>/ { in_fiction=0 } in_fiction && // { sub(/[^<]*<\/author>/, "Local<\/author>") } { print }' /home/user/app/xmlfiles/yourfile.xml > /home/user/app/xmlfiles/temp.xml && mv /home/user/app/xmlfiles/temp.xml /home/user/app/xmlfiles/yourfile.xml
Forklaring:
BEGIN { FS=OFS="" }
: Sætter feltseparatoren til ingenting, så hele linjen behandles som et enkelt felt.in_fiction=1
: Sætter en flag, når vi er inden for et <fiction>
tag med type="b"
.in_fiction && /<\/fiction>/ { in_fiction=0 }
: Nulstiller flaget, når vi når slutningen af <fiction>
tagget.in_fiction && // { sub(/[^<]*<\/author>/, "Local<\/author>") }
: Ændrer indholdet af <author>
tagget til 'Local', hvis vi er inden for det relevante <fiction>
tag.{ print }
: Udskriver hver linje./home/user/app/xmlfiles/temp.xml
: Midlertidig fil til at gemme ændringerne.mv /home/user/app/xmlfiles/temp.xml /home/user/app/xmlfiles/yourfile.xml
: Flytter den midlertidige fil til den oprindelige fil.Begge metoder vil ændre forfattertypen til 'Local' for de relevante <author>
tags i din XML-fil.
Har du brug for hjælp til XML-ændringer eller scripts? Med Handyhand kan du nemt oprette din opgave gratis og få bud fra dygtige freelancere på få minutter. Gør dit projekt lettere ved at få professionel assistance, når du har brug for det!