Hva ' er den beste måten å redigere en fil med et bash-skript?

Bruker / bin / bash på RHEL 5.8, og jeg vil automatisere redigering av en fil. Jeg trenger skriptet for å søke i filen og erstatte en linje i filen. Linjeeksempel:

Other line Current date 01121990 Other line 

Søk etter denne linjen og erstatt datostrengen med en forhåndsbestemt dato. Jeg kan ikke ekko til en ny fil og angi datoen min siden denne filen blir kopiert fra en serverspesifikk fil. Takk!

Kommentarer

  • sed ville være det valgte verktøyet her …

Svar

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

Det er den enkleste måten. Dette forutsetter at alle linjene som inneholder en dato som skal erstattes også er de eneste linjene som begynner med «Gjeldende dato».

Merk at brukernivået som kjører denne kommandoen også må ha tillatelse til å redigere den filen.

-i betyr innebygd redigering, noe som betyr at du redigerer filen direkte.

^Current date.* 

Betyr alle linjer som begynner med: Nåværende dato og ender med hva som helst. Med andre ord, erstatt hele linjen med det som er i den andre /…/ delen av sed-tingen.

Dobbelt «brukes rundt sed-setningen, slik at variabler vil bli brukt som variabler, ikke strenger.

Kommentarer

  • Takk Lizardx at ' er akkurat det jeg trenger, testet det og det fungerer bra
  • veldig glad for å høre det.

Svar

ed kan også gjøre redigering av filer ! Inode-nummeret til den redigerte filen forblir uendret.

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" 

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *