Jaki ' jest najlepszym sposobem edycji pliku za pomocą skryptu bash?

Używając / bin / bash na RHEL 5.8 i chcę zautomatyzować edycję pliku. Potrzebuję skryptu, aby przeszukać plik i zamienić wiersz w pliku. Przykład wiersza:

Other line Current date 01121990 Other line 

Wyszukaj ten wiersz i zastąp ciąg daty z góry określoną datą. Nie mogę odtworzyć nowego pliku i wprowadzić daty, ponieważ ten plik zostanie skopiowany z pliku specyficznego dla serwera. Dzięki!

Komentarze

  • sed byłoby tutaj narzędziem z wyboru …

Odpowiedź

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

To jest najłatwiejszy sposób. Zakłada się, że wszystkie wiersze zawierające datę do zastąpienia również są jedynymi wierszami zaczynającymi się od „Bieżąca data”.

Zauważ, że poziom użytkownika, który uruchamia to polecenie, musi również mieć uprawnienia do edycji tego pliku.

-i oznacza edycję bezpośrednią, co oznacza, że edytujesz plik bezpośrednio.

^Current date.* 

Oznacza wszystkie wiersze zaczynające się od: Bieżąca data i kończąc na czymkolwiek. Innymi słowy, zastąp całą linię tym, co znajduje się w drugiej /…/ części seda.

Double ”są używane wokół instrukcji sed, aby zmienne były używane jako zmienne, a nie strings.

Komentarze

  • Dzięki Lizardx, że ' jest dokładnie tym, czego potrzebuję, przetestowałem to i to działa świetnie
  • miło mi to słyszeć.

Odpowiedź

ed może również wykonywać edycję plików w miejscu ! Numer i-węzła edytowanego pliku pozostaje niezmieniony.

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" 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *