Pomocí / bin / bash na RHEL 5.8 a chci automatizovat úpravy souboru. Potřebuji skript k prohledání souboru a nahrazení řádku v souboru. Příklad řádku:
Other line Current date 01121990 Other line
Vyhledejte tento řádek a nahraďte řetězec data předem určeným datem. Nemohu „ozvěnu na nový soubor a zadat své datum, protože tento soubor bude zkopírován ze souboru specifického pro server. Díky!
Komentáře
-
sed
by zde byl nástroj volby …
odpověď
your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file
To je nejjednodušší způsob. To předpokládá, že všechny řádky, které obsahují datum, které mají být nahrazeny, jsou jedinými řádky, které začínají na „Aktuální datum“.
Upozorňujeme, že uživatelská úroveň, která spouští tento příkaz, musí mít také oprávnění k úpravám tohoto souboru.
-i znamená přímou úpravu, což znamená, že soubor upravujete přímo.
^Current date.*
Znamená všechny řádky začínající na: Aktuální datum a končí čímkoli. Jinými slovy, celý řádek nahraďte tím, co je ve druhé /…/ části věci sed.
Double „se používají kolem příkazu sed, takže proměnné budou použity jako proměnné, nikoli řetězce.
Komentáře
- Díky Lizardx, že ' je přesně to, co potřebuji, otestovalo to a to funguje skvěle
- velmi rád to slyším.
odpověď
ed
může provádět úpravy souborů na místě také! Číslo inode upraveného souboru zůstává nezměněno.
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"