Care ' este cel mai bun mod de a edita un fișier cu un script bash?

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

  • sed ar fi instrumentul ales aici …

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" 

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *