Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:unix:lab_sed_awk [2013/11/13 13:04]
ikaf [Definiowanie wyrażeń regularnych]
pl:dydaktyka:unix:lab_sed_awk [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== SED i AWK ====== ====== SED i AWK ======
 +
 +{{:​pl:​dydaktyka:​unix:​evolution_of_language.gif?​400|}}
 ===== Do przygotowania ===== ===== Do przygotowania =====
   * Przypomnieć sobie pracę z jednym z wybranych edytorów (np. vi, emacs, itp).   * Przypomnieć sobie pracę z jednym z wybranych edytorów (np. vi, emacs, itp).
Linia 5: Linia 7:
   * Przypomnieć sobie funkcję manipulujące łańcuchami znaków w języku C.   * Przypomnieć sobie funkcję manipulujące łańcuchami znaków w języku C.
   * Przeczytać następujące artykuły: ​   * Przeczytać następujące artykuły: ​
-    * Artykuł o //sed//: [[http://www.gentoo.org/​doc/​pl/​articles/​l-sed1.xml|część 1]], [[http://www.gentoo.org/​doc/​pl/​articles/​l-sed2.xml|część 2]], [[http://www.gentoo.org/​doc/​pl/​articles/​l-sed3.xml|część 3]] +    * Artykuł o //sed//: [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-sed1.xml|część 1]], [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-sed2.xml|część 2]], [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-sed3.xml|część 3]] (mirror: {{:​pl:​dydaktyka:​unix:​sed1.pdf|}},​ {{:​pl:​dydaktyka:​unix:​sed2.pdf|}},​ {{:​pl:​dydaktyka:​unix:​sed3.pdf|}}) 
-    * Artykuł o //awk//: [[http://www.gentoo.org/​doc/​pl/​articles/​l-awk1.xml|część 1]], [[http://www.gentoo.org/​doc/​pl/​articles/​l-awk2.xml|część 2]], [[http://www.gentoo.org/​doc/​pl/​articles/​l-awk3.xml|część 3]]+    * Artykuł o //awk//: [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-awk1.xml|część 1]], [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-awk2.xml|część 2]], [[http://​gentoo-handbook.lugons.org/​doc/​pl/​articles/​l-awk3.xml|część 3]] (mirror: {{:​pl:​dydaktyka:​unix:​awk1.pdf|}},​ {{:​pl:​dydaktyka:​unix:​awk2.pdf|}},​ {{:​pl:​dydaktyka:​unix:​awk3.pdf|}})
   * Wersja angielska:   * Wersja angielska:
-    * Artykuł o //sed//: [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed1.html|część 1]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed2.html|część 2]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-sed3.html|część 3]]. +    * Artykuł o //sed//: [[https://​www.ibm.com/​developerworks/​linux/​library/​l-sed1/index.html|część 1]], [[https://​www.ibm.com/​developerworks/​linux/​library/​l-sed2/index.html|część 2]], [[https://​www.ibm.com/​developerworks/​linux/​library/​l-sed3/index.html|część 3]]. 
-    * Artykuł o //awk//: [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk1.html|część 1]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk2.html|część 2]], [[http://​www.ibm.com/​developerworks/​linux/​library/​l-awk3.html|część 3]].+    * Artykuł o //awk//: [[https://​www.ibm.com/​developerworks/​linux/​library/​l-awk1/index.html|część 1]], [[https://​www.ibm.com/​developerworks/​linux/​library/​l-awk2/index.html|część 2]], [[https://​www.ibm.com/​developerworks/​linux/​library/​l-awk3/index.html|część 3]].
  
 +  * Ciekawym miejscem do ćwiczenia znajomości wyrażeń regularnych jest [[https://​regexcrossword.com/​|Regex Crossword]] :-)
 ===== Wprowadzenie ===== ===== Wprowadzenie =====
   * sed i awk są narzędziami strumieniowego przetwarzania tekstu.   * sed i awk są narzędziami strumieniowego przetwarzania tekstu.
Linia 26: Linia 29:
 ===== Definiowanie wyrażeń regularnych ===== ===== Definiowanie wyrażeń regularnych =====
   * Wyrażenia regularne składają się dwóch podstawowych zestawów znaków:   * Wyrażenia regularne składają się dwóch podstawowych zestawów znaków:
-    * Znaki kontrolne: . ? * + ^ | $ () [] {} \+    * Znaki kontrolne: ​''​. ? * + ^ | $ () [] {} \''​
     * Zwykłe znaki: pozostałe     * Zwykłe znaki: pozostałe
   * Kolejność znaków w wyrażeniu jest **istotna**.   * Kolejność znaków w wyrażeniu jest **istotna**.
Linia 48: Linia 51:
       * {,6} - co najwyżej 6 razy.       * {,6} - co najwyżej 6 razy.
   * Pionowa kreska (ang. pipeline) | to operator OR np. jeśli napiszemy a|b|c oznacza to, że w danym wyrażeniu może wystąpić a lub b lub c.   * Pionowa kreska (ang. pipeline) | to operator OR np. jeśli napiszemy a|b|c oznacza to, że w danym wyrażeniu może wystąpić a lub b lub c.
-  * Jeżeli chcemy użyć jednego ze znaków kontrolnych jako zwykłego to poprzedzamy go backslash-em **\** np: **^\$** definiuje wszystkie łańcuchy znaków rozpoczynające się od znaku dolara $.+  * Jeżeli chcemy użyć jednego ze znaków kontrolnych jako zwykłego to poprzedzamy go backslash-em **\** np: **^\$** definiuje wszystkie łańcuchy znaków rozpoczynające się od znaku dolara ​''​$''​. 
 + 
 + 
 ==== Przykłady ==== ==== Przykłady ====
 === Kod pocztowy === === Kod pocztowy ===
Linia 88: Linia 94:
 ===== Ćwiczenia ===== ===== Ćwiczenia =====
 ==== SED ==== ==== SED ====
-  - Przeczytać manual do programu. Zwrócić uwagę na polecenia, ich składnię oraz sposób adresacji poleceń.+ 
 +Przeczytać manual do programu. Zwrócić uwagę na polecenia, ich składnię oraz sposób adresacji poleceń. 
   - Wyświetlić plik **/​etc/​passwd** przy pomocy //sed//.   - Wyświetlić plik **/​etc/​passwd** przy pomocy //sed//.
   - Zamienić separator - dwukropek - w pliku ''/​etc/​passwd''​ na spację.   - Zamienić separator - dwukropek - w pliku ''/​etc/​passwd''​ na spację.
-  - Wyświetlić **tylko** ​nazwy użytkowników zapisanych w pliku ''/​etc/​passwd''​+  - Wyświetlić **tylko** ​loginy ​użytkowników zapisanych w pliku ''/​etc/​passwd''​
   - Wyświetlić 4, 7, 10 i 13 linię pliku ''/​etc/​passwd''​   - Wyświetlić 4, 7, 10 i 13 linię pliku ''/​etc/​passwd''​
   - Wyświetlić określone przedziałem (np. od 3. do 5. włącznie) linie pliku ''/​etc/​passwd''​.   - Wyświetlić określone przedziałem (np. od 3. do 5. włącznie) linie pliku ''/​etc/​passwd''​.
   - Wyświetlić linie pliku ''/​etc/​passwd''​ opisujące osoby mające login zaczynający się na '​z'​.   - Wyświetlić linie pliku ''/​etc/​passwd''​ opisujące osoby mające login zaczynający się na '​z'​.
-  - Wyświetlić linie pliku ''/​etc/​passwd''​ opisujące osoby mające login zaczynający się na 'q' lub '​z'​.+  - Wyświetlić linie pliku ''/​etc/​passwd''​ opisujące osoby mające login zaczynający się na 'w' lub '​z'​.
   - Jak przy pomocy sed zaimitować polecenie ''​grep -v''?​ np. dla frazy '​lo'​ (''​grep -v lo /​etc/​networks''​)   - Jak przy pomocy sed zaimitować polecenie ''​grep -v''?​ np. dla frazy '​lo'​ (''​grep -v lo /​etc/​networks''​)
   - Jak zamienić w pliku wszystkie słowa ''​root''​ na twój login (przetestuj na pliku ''/​etc/​aliases''​)?​   - Jak zamienić w pliku wszystkie słowa ''​root''​ na twój login (przetestuj na pliku ''/​etc/​aliases''​)?​
Linia 102: Linia 110:
   - Jak zamienić przy pomocy sed wszystkie litery '​r'​ na '​k'?​   - Jak zamienić przy pomocy sed wszystkie litery '​r'​ na '​k'?​
   - W jaki sposób zakodować szyfrem ROT13 plik przy pomocy sed (szyfr zamienia litery na występujące 13 liter dalej, np. a<​->​n,​ b<​->​o,​ itd.)?   - W jaki sposób zakodować szyfrem ROT13 plik przy pomocy sed (szyfr zamienia litery na występujące 13 liter dalej, np. a<​->​n,​ b<​->​o,​ itd.)?
-  - Przy pomocy polecenia sed zakomentuj linijkę ​default ​w pliku ''/​etc/​networks''​.+  - Przy pomocy polecenia sed zakomentuj linijkę ​link-local ​w pliku ''/​etc/​networks''​.
   - 8-o W jaki sposób przy użyciu sed wstawić kolumnę X po pierwszym znaku wiersza (dodatkowy znak X w każdym wierszu)? A jak po piątym?   - 8-o W jaki sposób przy użyciu sed wstawić kolumnę X po pierwszym znaku wiersza (dodatkowy znak X w każdym wierszu)? A jak po piątym?
   - Jak przy pomocy sed powtórzyć 3 razy pierwsze dwie litery każdego wiersza w pliku?   - Jak przy pomocy sed powtórzyć 3 razy pierwsze dwie litery każdego wiersza w pliku?
Linia 243: Linia 251:
  
 \\  \\ 
-** 8-) 8-) 8-) 8-) 8-) 8-) Zadanie 3** \\+** 8-) 8-) 8-) Zadanie 3** \\
  \\  \\
 Napisz skrypt programu awk który policzy i wyświetli średnią ocen dla każdego studenta. Napisz skrypt programu awk który policzy i wyświetli średnią ocen dla każdego studenta.
pl/dydaktyka/unix/lab_sed_awk.1384344252.txt.gz · ostatnio zmienione: 2019/06/27 15:55 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0