Ja, det er muligt at erstatte en værdi for en enkelt variabel i en inputfil og tilføje parret til slutningen af filen, hvis det ikke findes, ved hjælp af awk
. Her er en løsning, der bruger awk
:
awk -v var="VARIABLE" -v val="new_value" '
BEGIN { found=0 }
{
if ($0 ~ "^" var "=") {
$0 = var "=" val
found=1
}
print
}
END {
if (found == 0) {
print var "=" val
}
}' inputfile > outputfile
Forklaring:
-v var="VARIABLE"
: Angiver variabelnavnet, der skal erstattes eller tilføjes.-v val="new_value"
: Angiver den nye værdi for variablen.BEGIN { found=0 }
: Initialiserer en flag-variabel found
til 0 i begyndelsen.if ($0 ~ "^" var "=")
: Tjekker om linjen indeholder variablen i starten.$0 = var "=" val
: Erstatter linjen med den nye værdi, hvis variablen findes.found=1
: Sætter flaget found
til 1, hvis variablen findes og erstattes.print
: Udskriver linjen.END { if (found == 0) { print var "=" val } }
: Tilføjer variablen og dens værdi til slutningen af filen, hvis den ikke blev fundet.Dette script bevarer linjeordenen og sikrer, at variablen enten erstattes eller tilføjes til slutningen af filen, hvis den ikke findes.
Spar dig selv for besvær og kom igennem din to-do liste i dag
1
Beskriv din opgave
2
Modtag bud
3
Få løst din opgave
Møbelsamling
Hjælp med at samle Ikea klædeskab
Maler
Klargøring af lejlighed til flyttesyn
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Havearbejde
Beskæring af 4 større træer
IT support
Geninstallering af windows + programmer
Elektriker
Installation af Sonos musikanlæg i hus
Rengøring
Ugentlig rengøring af lejlighed (114kvm)
Flyttehjælp
Flytning af 150 kvm hus til Roskilde fra København
Elektriker
Opsætning af lamper i stue og soveværelse
Catering
3-retters menu til 14 mennesker