Problem jest następujący. Mam listę kilkunastu loginów użytkowników naszej instytutowaj sieci, są one postaci sxxxxxx, czyli s i sześć cyfr. Muszę zamienić te loginy na nazwiska osób do nich przypisanych. W tym celu zamierzam użyć komendy finger -s, która zwraca dwie linijki tekstu. Np.
finger -s s100000
zwraca
Login Name Blabla
s100000 Imię Nazwisko Dlasze info w kilku innych kolimnach.
Teraz z tego potrafię wyselekcjonować to nazwisko w taki sposób, że zostaje mi
<pusta linia>
Nazwisko
Teraz wykorzystuję Sed do zamiany każdego z loginów mojej listy na odpowiednie nazwisko. Lista znajduje się w pliku forsed, a nazwiska mają się znaleźć w sedout.
sed 's/^s[0-9][0-9][0-9][0-9][0-9][0-9]/finger -s s241609|cut -c'11-40'|cut -f1 -d' ' / ' forsed > sedout
W tym miejscu pojawia się następujący błąd:
sed: -e wyrażenie #1, znak 75: niezakończone polecenie `s'
Nie rozumiem. Nie korzystam z flagi -e, a polecenie s jest przecież zakończone. Zatem wszystko powinno iść sprawnie.
Poza tym, kiedy po komendzie finger i kilku innych dostaję:
<pusta linia>
Nazwisko
nie potrafię się tej pustej linii pozbyć, nawet przy użyciu Sed.
Pomocy. A za każdą z góry dziękuję.

Problem ze skryptem z wykorzystaniem Sed
Rozpoczęty przez goku94, 23 sty 2013 22:46
2 odpowiedzi w tym temacie
#1
Napisano 23 styczeń 2013 - 22:46
#2
Napisano 23 styczeń 2013 - 23:49
1. Otwierasz otrzymany plik w jakimś edytorze tekstu
2. Kasujesz niepotrzebną linię
3. Zapisujesz plik i zamykasz program.
2. Kasujesz niepotrzebną linię
3. Zapisujesz plik i zamykasz program.
AMD Phenom II 955
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
Pentagram Karakorum HP-120 AlCu + Arctic Cooling AF1225L
4 GB DDR3 1600 MHz
Było Asus Radeon HD 6950 DCU II, jest XFX 7850 z AC Mono - czego się nie robi dla tej ciszy!
SilentiumPC Deus G1 600W
#3
Napisano 24 styczeń 2013 - 00:15
@up, nie jest to specjalnie noblogenne rozwiązanie jak ktoś ma napisać skrypt -.-
sed 's/^s[0-9][0-9][0-9][0-9][0-9][0-9]/finger -s s241609|cut -c'11-40'|cut -f1 -d' ' / ' forsed > sedout
Wydaje mi się, że twoje wyrażenie regularne nie jest zakończone apostrofem, stąd błąd z literką s. Poza tym masz tam /finger a wydaje mi się że chciałeś użyć pipe'a (| finger)
Co do problemu z linią spróbuj poleceniem tail. Więcej oczywiście w manualu.
sed 's/^s[0-9][0-9][0-9][0-9][0-9][0-9]/finger -s s241609|cut -c'11-40'|cut -f1 -d' ' / ' forsed > sedout
Wydaje mi się, że twoje wyrażenie regularne nie jest zakończone apostrofem, stąd błąd z literką s. Poza tym masz tam /finger a wydaje mi się że chciałeś użyć pipe'a (| finger)
Co do problemu z linią spróbuj poleceniem tail. Więcej oczywiście w manualu.
Użytkownicy przeglądający ten temat: 1
0 użytkowników, 1 gości, 0 anonimowych