Komenda sed - wyświelenie linii
Komenda sed - wyświelenie linii
Hej, mam mały problem, przypominam sobie komendy na jutrzejsze kolokwium i na'trafiłam na takie zadanie:
Korzystając z programu sed wyświetlić z pliku kot.txt linie, których drugi wyraz zaczyna się spółgloską. Wyrazy te zapisać w pliki wyrazy.txt, zastępując w nich samogloski znakiem podkreślenia
wiem, że będzie mi potrzebna komenda sed -n '/^[b,c,d,f,g,h,j,k,l,m,n,p,r,s,t,w,z]/p' kot ale wciąż nie wiem jak zaznaczyć, że chodzi mi o drugi wyraz
Korzystając z programu sed wyświetlić z pliku kot.txt linie, których drugi wyraz zaczyna się spółgloską. Wyrazy te zapisać w pliki wyrazy.txt, zastępując w nich samogloski znakiem podkreślenia
wiem, że będzie mi potrzebna komenda sed -n '/^[b,c,d,f,g,h,j,k,l,m,n,p,r,s,t,w,z]/p' kot ale wciąż nie wiem jak zaznaczyć, że chodzi mi o drugi wyraz
Ostatnio zmieniony 04 gru 2012, 20:15 przez oshirley, łącznie zmieniany 1 raz.
-
- Przyjaciel
- Posty: 6686
- Rejestracja: 20 sty 2009, 23:12
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Inne
- Architektura: x86_64
- Lokalizacja: pwd
Re: Komenda sed
Zmień tytuł tematu tak, aby w sposób możliwie precyzyjny przedstawiał sedno sprawy, w której piszesz. Miej na uwadze również zgodność z REGULAMINEM
Tytuł tematu zmienisz edytując pierwszy post
W razie wątpliwości/zastrzeżeń odnośnie powyższej informacji skontaktuj się z moderatorem, który ją wstawił.Tytuł tematu zmienisz edytując pierwszy post
O pomoc pytaj a forum, a nie przez PW.
-
- Zakręcona Traszka
- Posty: 548
- Rejestracja: 24 sty 2008, 15:55
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: LXDE
- Architektura: x86_64
Re: Komenda sed - wyświelenie linii
Może być w awk?
Zawartość pliku:
Wynik:
EDIT:
To samo, ale krócej:
Zawartość pliku:
Kod: Zaznacz cały
jan ala mirek
tomek ela bob
zenek kamil irek
Kod: Zaznacz cały
awk '$2~/^[b,c,d,f,g,h,j,k,l,m,n,p,r,s,t,w,z]/{gsub(/[a, e, y, u, i, o, ó ą, ę]/, "_", $2); print $2 > "wyrazy.txt"}' plik
k_m_l
To samo, ale krócej:
Kod: Zaznacz cały
awk '$2!~/^[aeyuioóąę]/{gsub(/[aeyuioóąę]/, "_", $2); print $2 > "wyrazy.txt"}' plik
Ostatnio zmieniony 05 gru 2012, 07:19 przez Mały 1, łącznie zmieniany 2 razy.
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Re: Komenda sed - wyświelenie linii
Kod: Zaznacz cały
sed -n 's/^[A-Za-z]\+\s\+[^aeiouyAEIOUY]\([A-Za-z]\+\)\s\+.\+$/_\1/p' kot.txt > wyrazy.txt
początek lini - literki - spacje - nie samogłoska - literki - spacje - cokolwiek - koniec lini
Cała linia jest zamieniana na "_literki". Niepasujące linie są ignorowane (połączenie parametru -n z flagą /p). Może trochę na około i łopatologicznie, ale działa.

Re: Komenda sed - wyświelenie linii
dziękuję Wam!
)

- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Re: Komenda sed - wyświelenie linii
Oj, nie doczytałem (x2).
Biorąc pod uwagę całą treść zadania:
Najpierw drukujemy całe linie pasujące do wzoru (/p), a do pliku zapisujemy (/w) tak jak wyżej napisałem - te podmienione. Na sam koniec podmieniamy samogłoski.

Kod: Zaznacz cały
sed -n '/^[A-Za-z]\+\s\+[^aeiouyAEIOUY][A-Za-z]\+\s\+.\+$/p' kot.txt
sed -n 's/^[A-Za-z]\+\s\+\([^aeiouyAEIOUY][A-Za-z]\+\)\s\+.\+$/\1/w wyrazy.txt' kot.txt
sed -i 's/[aeiouyAEIOUY]/_/g' wyrazy.txt
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości