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
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
