Vilket ' är det bästa sättet att redigera en fil med ett bash-skript?

Med / bin / bash på RHEL 5.8 och jag vill automatisera redigering av en fil. Jag behöver skriptet för att söka i filen och ersätta en rad i filen. Linjeexempel:

Other line Current date 01121990 Other line 

Sök efter den här raden och ersätt datumsträngen med ett förutbestämt datum. Jag kan inte echo till en ny fil och ange mitt datum eftersom den här filen kommer att kopieras från en serverspecifik fil. Tack!

Kommentarer

  • sed skulle vara det valbara verktyget här …

Svar

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

Det är det enklaste sättet. Detta förutsätter att alla rader som innehåller ett datum som ska ersättas också är de enda raderna som börjar med ”Aktuellt datum”.

Observera att användarnivån som kör det här kommandot också måste ha behörighet att redigera filen.

-i betyder inline-redigering, vilket innebär att du redigerar filen direkt.

^Current date.* 

Betyder alla rader som börjar med: Aktuellt datum och slutar med vad som helst. Med andra ord, ersätt hela raden med vad som finns i den andra /…/ delen av sed-saken.

Dubbel ”används runt sed-uttalandet så att variabler kommer att användas som variabler, inte strängar.

Kommentarer

  • Tack Lizardx att ' är exakt vad jag behöver, testade det och det fungerar bra
  • jätteglad att höra det.

Svar

ed kan göra redigering av filer på plats också! Den redigerade filens inodnummer förblir oförändrat.

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" 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *