Wat is ' is de beste manier om een bestand te bewerken met een bash-script?

Gebruik / bin / bash op RHEL 5.8 en ik wil het bewerken van een bestand automatiseren. Ik heb het script nodig om het bestand te doorzoeken en een regel in het bestand te vervangen. Regelvoorbeeld:

Other line Current date 01121990 Other line 

Zoek naar deze regel en vervang de datumreeks door een vooraf bepaalde datum. Ik kan “niet echoën naar een nieuw bestand en mijn datum invoeren, aangezien dit bestand zal worden gekopieerd van een serverspecifiek bestand. Bedankt!

Opmerkingen

  • sed zou hier het gereedschap bij uitstek zijn …

Antwoord

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

Dat is de gemakkelijkste manier. Dit veronderstelt dat alle regels die een te vervangen datum bevatten ook de enige regels zijn die beginnen met “Huidige datum”.

Merk op dat het gebruikersniveau dat dit commando uitvoert ook toestemming moet hebben om dat bestand te bewerken.

-i betekent inline bewerken, wat betekent dat u het bestand rechtstreeks bewerkt.

^Current date.* 

Betekent alle regels die beginnen met: Huidige datum en eindigend in wat dan ook. Met andere woorden, vervang de hele regel door wat in het tweede /…/ deel van het sed-ding staat.

Double “worden gebruikt rond de sed-instructie zodat variabelen als variabelen worden gebruikt, niet strings.

Reacties

  • Bedankt Lizardx dat ' precies is wat ik nodig heb, getest en het werkt geweldig
  • fijn om te horen.

Antwoord

ed kan ter plaatse bewerken van bestanden ook! Het inode-nummer van het bewerkte bestand blijft ongewijzigd.

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" 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *