[bash] Sed zamiana w pliku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Nethia
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 23 gru 2010, 19:29
Płeć: Kobieta
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64

[bash] Sed zamiana w pliku

Post autor: Nethia »

Kod: Zaznacz cały

sed -i "s|$user:${passwd}:$reszta|$user:${haslo}:$reszta|" $Plik
Próbuje zamienić sed'em linijkę

user:*:1244:4324

na

user:haslo:1244:4324

lecz wychodzi

user:haslo:*:1244:4324

Probowałam już róznie zapisywac zamiane w sed'zie, lecz cały czas gwiazdka nie chce zniknąć.
Z innymi znakami działa poprawnie.
Znacie jakiś sposób zamiany tej gwiazdki na cos innego?
Awatar użytkownika
karmelek
Przyjaciel
Przyjaciel
Posty: 883
Rejestracja: 10 lut 2007, 17:45
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [bash] Sed zamiana w pliku

Post autor: karmelek »

Ja spróbowałbym użyć AWK. Może prościej to poleci.
Wszystkich moderatorów Bóg po śmierci zabiera do nieba, żeby ci dwadzieścia cztery godziny na dobę moderowali modlitwy do niego.
http://karmelek.wordpress.com
inny OS=debian lenny
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: dk75 »

mi działa takie coś

Kod: Zaznacz cały

sed -i 's/\(.*\):.*:\(.*\):\(.*\)/\1:'${haslo}':\2:\3/' $Plik
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Nethia
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 23 gru 2010, 19:29
Płeć: Kobieta
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: Nethia »

tylko nie zawsze jako poprzednie haslo bedzie gwiazdka i takze trzeba sie liczyc z tym ze moze byc pare osob o takim samym hasle
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: dk75 »

Jaki przykład takie rozwiązanie a poza tym ja nie szukam gwiazdki przy pomocy mojego polecenia SED tylko 4 ciągi tekstowe rozdzielone znakami ":" i podmieniam 2-gi na wybraną zmienną a resztę przepisuję bez zmian.

napisz co dokładniej chcesz zrobić i jakie mogą być wariacje danych wejściowych to można będzie coś bardziej pasującego wymyśleć.

Łatwiej by było to zrobić w AWK no ale skoro miał być SED...

REGEX oznacza dowolny, ciągły, maksymalny blok znakowy (pusty lub większy), umieszczony pomiędzy

Kod: Zaznacz cały

\(   \)
umożliwia ponowne jego wstawienie przy użyciu funkcji podmiany ciągów znakowych, czyli odpowiada za pierwszy znaleziony ciąg znakowy przeznaczony do przepisania.

PS: aby znaleźć ciąg tekstowy który ma nie mniej niż jeden znak w sobie należy użyć REGEX
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Nethia
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 23 gru 2010, 19:29
Płeć: Kobieta
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: Nethia »

Dokladnie zadanie polega na podmianie hasel w kopi pliku shadow jako pierwszy argument wywolania dostaje nazwe konta z ktorego ma byc brane haslo a dalej nazwy kont ktorym to haslo mam podmienic.

Dobra zrobilam ;) Dzieki bardzo za wyjasnienie tych wszystkich oznaczen.
Awatar użytkownika
dk75
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1142
Rejestracja: 07 mar 2007, 22:59
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: dk75 »

w takim razie jeśli musisz to zrobić na podstawie usera to

Kod: Zaznacz cały

sed -i 's/\('$user'\):.*:\(.*\):\(.*\)/\1:'$haslo':\2:\3/' $Plik
tylko pamiętaj, że hasła w pliku /etc/shadow są zakodowane więc takie niezakodowane nie będą działać i musisz je sama jakoś ręcznie zakodować
Linux Mint Debian Edition x86_64/2.6.39, Conky 1.8.0, Xorg 7.6/1.10.4 - GNOME 2.30.2, nVidia 285.03
Lenovo T61p, HITACHI HTS722010K9SA00 100GB, ST9250827AS 250GB
http://linuxcounter.net/user/483055.html
Nethia
Piegowaty Guziec
Piegowaty Guziec
Posty: 4
Rejestracja: 23 gru 2010, 19:29
Płeć: Kobieta
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64

Odp: [bash] Sed zamiana w pliku

Post autor: Nethia »

to wiadomo ten skrypt jest nieprzydatny ale takowy kazali nam na zajecia zrobic
I jeszcze raz dzieki bardzo :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 27 gości