Hvad ' er den bedste måde at redigere en fil på med et bash-script?

Brug af / bin / bash på RHEL 5.8, og jeg vil automatisere redigering af en fil. Jeg har brug for scriptet for at søge i filen og erstatte en linje i filen. Linjeeksempel:

Other line Current date 01121990 Other line 

Søg efter denne linje, og udskift datostrengen med en forudbestemt dato. Jeg kan ikke ekko til en ny fil og indtaste min dato, da denne fil kopieres fra en serverspecifik fil. Tak!

Kommentarer

  • sed ville være det valgte værktøj her …

Svar

your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file 

Det er den nemmeste måde. Dette forudsætter, at alle linjer, der indeholder en dato, der skal erstattes, også er de eneste linjer, der starter med “Aktuel dato”.

Bemærk, at det brugerniveau, der kører denne kommando, også skal have tilladelse til at redigere den fil.

-i betyder integreret redigering, hvilket betyder at du redigerer filen direkte.

^Current date.* 

Betyder alle linjer, der starter med: Aktuel dato og slutter med noget. Med andre ord skal du erstatte hele linjen med det, der er i den anden /…/ del af sed-tingen.

Dobbelt “bruges omkring sed-sætningen, så variabler vil blive brugt som variabler, ikke strings.

Kommentarer

  • Tak Lizardx at ' er nøjagtigt hvad jeg har brug for, testede det og det fungerer godt
  • meget glad for at høre det.

Svar

ed kan også redigering af filer på stedet ! Inodetallet for den redigerede fil forbliver uændret.

file="/path/to/file" your_date="your desired date" ls -i "$file" printf "%s\n" H ",g/^Current date.*/s//${your_date}/" wq | ed -s "$file" ls -i "$file" 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *