S Stream Editor.pdf
(
648 KB
)
Pobierz
124532932 UNPDF
Podstawy open source – system SUSE Linux cz. II
2-127
2.6 Edytor sed (Stream Editor)
sed
to edytor do manipulowania plikami tekstowymi. Jako edytor
„strumieniowy” różni się od innych, takich jak
vi
lub
gedit
.
sed
nie pracuje interaktywnie, ale jest kontrolowany
opcjami polecenia liniowego lub skryptem takim, jak
tryb
ex
w
vi
.
Edytor
sed
wczytuje bieżący wiersz pliku do wewnętrznego bufora celem
manipulowania tekstem. Wynik jest wysyłany na standardowe wyjście.
Oryginalny plik nie jest nigdy zmieniany. Jeżeli chcemy zapisać wyjście w pliku,
należy przekierować standardowe wyjście na plik.
Składnia uruchamiania sed: sed opcje „polecenie” nazwa_pliku
Najprostszym poleceniem
sed
jest „
p” (print):
geeko@da51:~ > sed 'p' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet,
Lorem ipsum dolor sit amet,
...
Jak widać w powyższym przykładzie, każdy wiersz jest dwukrotnie
drukowany, ponieważ
sed
domyślnie wysyła każdy wiersz na
standardowe wyjście. By temu zapobiec, powinno się dodać opcję
-n
:
geeko@da51:~ > sed n 'p' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
...
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Podstawy open source – system SUSE Linux cz. II
2-128
Przyjrzyjmy się bliżej części „polecenie” składni wywołania
sed
.
Przede wszystkim, można podać deklarację adresu z numerami wierszy, które
sed
powinien sprawdzić. Są różne możliwości:
brak deklaracji
- wszystkie wiersze
numer
- tylko wiersz o numerze numer, np:
geeko@da51:~ > sed n '1p' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
start, end
- wiersze od start do end, np:
geeko@da51:~ > sed n '2,4p' loremipsum.txt
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
$
- ostatni wiersz, np:
geeko@da51:~ > sed n '36,$p' loremipsum.txt
facilisis at vero eros et accumsan
et iusto odio dignissim qui blandit
praesent luptatum zzril delenit
au gue duis dolore te feugat nulla facilisi.
/regexp/
- wiersze zgodne z regularnym wyrażeniem regexp, np:
geeko@da51:~ > sed n '/^D/p' loremipsum.txt
Duis te feugifacilisi.
Duis autem dolor in hendrerit
Duis te feugifacilisi per suscipit
Duis te feugifacilisi.
Duis autem dolor in hendrerit in
Wyjaśnienie. Zostaną wydrukowane wiersze zaczynające się od
dużej litery „D”.
numer, /regexp/ - wiersze od numer do pierwszego wiersza, który spełnia
kryterium regexp, np:
geeko@da51:~ > sed n '9,/^D/p' loremipsum.txt
suscipit lobortis nisl
ut aliquip ex ea commodo consequat.
Duis te feugifacilisi.
Wyjaśnienie. Zostaną wydrukowane wszystkie wiersze od wiersza 9
do pierwszego wiersza zaczynającego się od dużej litery „D”.
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Podstawy open source – system SUSE Linux cz. II
2-129
Można też, w podobny sposób, użyć wyrażenia
regularnego jako punktu początkowego dla
sed
.
Regularne wyrażenia edytora
sed
są podobne do tych
omówionych wcześniej. Jednak są tu dodatkowe znaki specjalne
wymagające poprzedzenia znakiem „ \”:
\(
…
|)
\{
…
|}
Można połączyć dwa lub więcej poleceń
sed
używając opcji
-e
:
geeko@da51:~ > sed n e '3p' e '6p' e '9p' loremipsum.txt
Lorem ipsum dolor sit amet,
ut lacreet dolore magna aliguam erat volutpat.
suscipit lobortis nisl
Wyjaśnienie. Wiersze 3, 6 oraz 9 zostaną wyświetlone na ekranie.
Można też rozdzielić polecenia używając znaku
„;”
:
geeko@da51:~ > sed n '3p;6p;9p' loremipsum.txt
Lorem ipsum dolor sit amet,
ut lacreet dolore magna aliguam erat volutpat.
suscipit lobortis nisl
Ćwiczenie. Używanie sed – część I
Użyj sed do wyświetlenia na ekranie wierszy 10 do 15 z dowolnego pliku
tekstowego.
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Podstawy open source – system SUSE Linux cz. II
2-130
Poniżej podano kilka innych ważnych poleceń
sed
:
„a” (append
) dołącza jeden lub więcej wierszy za podanym wierszem
(wierszami) w poleceniu. Przykład:
geeko@da51:~ > sed '1aHello Geeko' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
Hello Geeko
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
...
Jeżeli chcesz dodać więcej niż jeden wiersz, należy znak nowego wiersza
zamaskować znakiem ukośnika „\”:
geeko@da51:~ > sed '1aHello Geeko\
> Hello Suzie' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
Hello Geeko
Hello Suzie
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
...
„i” (insert)
dodaje jeden lub więcej wierszy przed podanym
(podanymi):
geeko@da51:~ > sed '1iHello Geeko' loremipsum.txt
Hello Geeko
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
...
„r nazwa_pliku”
wstawia zawartość podanego pliku za podanym
wierszem (wierszami):
geeko@da51:~ > sed '1r numbers.txt' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
0000
123
...
98798
765765
Lorem ipsum dolor sit amet,
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Podstawy open source – system SUSE Linux cz. II
2-131
consectetuer adipiscing elit,
sed diem nonummy nibh euismodtincidunt
...
„d” (delete)
kasuje wskazany wiersz (wiersze).
geeko@da51:~ > sed '1,3d' loremipsum.txt
consectetuer adipiscing elit,
sed diem nonummy nibh euismodtincidunt
ut lacreet dolore magna aliguam erat volutpat.
„c” (replace)
zastępuje podanym tekstem wskazany wiersz (wiersze):
geeko@da51:~ > sed '1,3cHello Geeko' loremipsum.txt
Hello Geeko
consectetuer adipiscing elit,
sed diem nonummy nibh euismodtincidunt
ut lacreet dolore magna aliguam erat volutpat.
Wyjaśnienie. Wiersze 1 do 3 zostały zastąpione tekstem „Hello Geeko”.
„w” (write)
zapisuje wyjście edytora
sed
do podanego pliku. Można
użyć tego polecenia zamiast przekierowania wyjścia przez użycie
„>
”.
geeko@da51:~ > sed n '1w output.txt' loremipsum.txt
Wyjaśnienie. Tworzony jest nowy plik o nazwie output.txt. Zawiera pierwszy
wiersz pliku loremipsum.txt.
Jeżeli pominiemy opcję „
-n
”, zawartość loremipsum.txt
zostanie wyświetlona na ekranie, a nie zapisana do
pliku output.txt.
„q” (quit)
kończy pracę z edytorem.
geeko@da51:~ > sed '3q' loremipsum.txt
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet,
Ćwiczenie. Używanie edytora sed – część II
Użyj sed do usunięcia pierwszych dziesięciu linii wybranego pliku
tekstowego oraz zapisania ich w pliku short.txt.
2008 Novell Inc.
Licencja Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Wolno kopiować, rozprowadzać, przedstawiać
i wykonywać utwór oraz opracowane na jego podstawie utwory zależne jedynie dla celów niekomercyjnych, przy zachowaniu autorstwa
Novell Inc.
Plik z chomika:
stanpiela
Inne pliki z tego folderu:
KDE.pdf
(5263 KB)
GUI.pdf
(3520 KB)
GNOME.pdf
(1910 KB)
Gimp.pdf
(3802 KB)
Gaim.pdf
(1653 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin