Strona 1 z 1

[bash] Sed zamiana w pliku

: 23 gru 2010, 19:39
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?

Odp: [bash] Sed zamiana w pliku

: 23 gru 2010, 20:46
autor: karmelek
Ja spróbowałbym użyć AWK. Może prościej to poleci.

Odp: [bash] Sed zamiana w pliku

: 23 gru 2010, 20:48
autor: dk75
mi działa takie coś

Kod: Zaznacz cały

sed -i 's/\(.*\):.*:\(.*\):\(.*\)/\1:'${haslo}':\2:\3/' $Plik

Odp: [bash] Sed zamiana w pliku

: 24 gru 2010, 15:59
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

Odp: [bash] Sed zamiana w pliku

: 24 gru 2010, 22:41
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

Odp: [bash] Sed zamiana w pliku

: 25 gru 2010, 11:46
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.

Odp: [bash] Sed zamiana w pliku

: 25 gru 2010, 13:42
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ć

Odp: [bash] Sed zamiana w pliku

: 25 gru 2010, 13:49
autor: Nethia
to wiadomo ten skrypt jest nieprzydatny ale takowy kazali nam na zajecia zrobic
I jeszcze raz dzieki bardzo :)