Folosind / bin / bash pe RHEL 5.8 și vreau să editez automat un fișier. Am nevoie de script pentru a căuta fișierul și a înlocui o linie din fișier. Exemplu de linie:
Other line Current date 01121990 Other line
Căutați această linie și înlocuiți șirul de date cu o dată predeterminată. Nu pot să reamintesc la un fișier nou și să intru în data mea, deoarece acest fișier va fi copiat dintr-un fișier specific serverului. Mulțumesc!
Comentarii
Răspuns
your_date="your desired date" sed -i "s/^Current date.*/Current date ${your_date}/" /path/to/file
Acesta este cel mai simplu mod. Aceasta presupune că toate liniile care conțin o dată de înlocuit sunt, de asemenea, singurele linii care încep cu „Data curentă”.
Rețineți că nivelul utilizatorului care execută această comandă trebuie să aibă și permisiunea de a edita acel fișier.
-i înseamnă editare în linie, ceea ce înseamnă că editați fișierul direct.
^Current date.*
Înseamnă toate liniile care încep cu: Data actuală și se termină în orice. Cu alte cuvinte, înlocuiți întreaga linie cu ceea ce se află în a doua parte /…/ a lucrului sed.
Dublu „se utilizează în jurul instrucțiunii sed, astfel încât variabilele să fie utilizate ca variabile, nu șiruri.
Comentarii
- Mulțumesc Lizardx că ' este exact ceea ce am nevoie, l-am testat și funcționează excelent
- mă bucur să-l aud.
Răspunde
ed
poate face și editarea în loc a fișierelor ! Numărul de inod al fișierului editat rămâne neschimbat.
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"
sed
ar fi instrumentul ales aici …