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"