ݺߣ

ݺߣShare a Scribd company logo
Práce s textem
v Unixu
Petr Pilař 4. E
Příkazy
• Příkaz FILE – odhadnutí typu souboru
• Příkaz CAT – textový výpis souboru
• Příkaz SORT – třídění
• Příkaz GREP – vystřižení části výstupu odpovídající vzoru
Příkazy
• Příkaz WC – počet slov
• Příkaz TAIL / HEAD – vypíše se posledních / prvních N
řádek, +-
• Příkaz CUT – vykrojení znaků (-d<znak>) nebo polí
seznamu (-f<seznam>)
Regulární výrazy
• Regexp, regex či jen RE
• Řetězec popisující množinu řetězců
• Vyhledávání v textu či jeho validace
Atomy
• a – „Obyčejné“ znaky zastupují ve vzoru samy sebe.
•  – zbavuje zvláštního význam znaku (n, r, t,..)
• . – tečka zastupuje jeden libovolný znak.
• [abc] – právě jeden znak z množiny definované v závorce
• [0-9] – interval; [^0-9] – doplněk výrazu
• ^ – začátek řádku
• $ – konec řádku
• < a > – začátek a konec slova (odpovídá hranici mezi slovy)
Kvantifikátory
• * – Přechozí atom se libovolněkrát opakuje
• ? – Předchozí atom se vyskytuje volitelně
• + – Předchozí atom se opakuje jednou či vícekrát
• {N} – Předchozí atom se vyskytuje právě N-krát
• {N,} – Předchozí atom se vyskytuje alespoň N-krát.
• {,N} – Předchozí atom se vyskytuje nejvýše N-krát.
• {M,N} – Předchozí atom se vyskytuje alespoň M-krát
a nejvýše N-krát.
Příklady
• Text v závorkách (bez vnoření):
• (.*)
• Celé číslo se znaménkem:
• [-+]?[0-9]+
• Decimální číslo (jednoduché, nepřipouští programátorské zápisy typu .14 či
3.):
• [-+]?[0-9]+(.[0-9]+)?
• Řetězec (neobsahující uvozovky a apostofy) v uvozovkách nebo apostrofech:
• (['"])[^'"]*1
• Komentář shellu (celý řádek):
• ^s*#.*$
• E-mailová adresa (jednoduchá):
• [-+._0-9A-za-z]+@([-0-9A-Za-z]+.)+.[-0-9A-Za-z]+
grep
• grep <vzor> [soubor]
• výpis řádků obsahující zadaný vzor
• Přepínače:
• -v invertuje smysl (výpis řádků neobsahující vzor)
• -i nerozlišuje velká a malá písmena
• Příklad: ypcat passwd | grep novak | cat –n > novakove.txt
sort
• sort [soubor]
• Třídění, implicitně alfanumericky od začátku řádky
• Přepínače:
• -n numerické třídění
• -t<znak> definice oddělovače polí (implicitně mezery a
tabulator)
• -k<n>,<n> třídění podle tého pole
tee
• tee <soubor>
• posílá vstup beze změny na výstup a zároveň do souboru
sed
• sed [adresa]příkaz[parametry][přepínače]
• vstup po řádcích
• Příklady výrazů:
• 10d # zruší (vynechá) 10 řádku
• /^[A-Z]/d # zruší řádky začínající velkým písmenem
• s/Jan/Honza/# ve všech řádkách nahradí Jan za Honza
• 15,$a # za řádky od 15 do konce vloží řádku ***
• *** # a (append) = za řádku, i (insert) = před
• Příklad použití: ls -l / | cat –n | sed ´10,15d´ >upravena_data
awk
#!/bin/awk -f
BEGIN{
print "n"
printf " %-21s %10sn", "soubor", "delka"
print "---------------------------------"
}
#obyc soubor
/^-/{
printf " %-21s %10dn" ,$9,$5
suma=suma+$5
if ($5 > 10000) {
print "pozor velke!!!"
print $9 > "velke_soubory.txt"
}
}
#
END{
print "---------------------------------"
printf " Celkem %25dn", suma
}
Deskriptory a přesměrování
• Čísla kanálů
• 0 = vstup, 1 = výstup, 2 = chyby
• Příkaz m>soubor
• Přesměrování kanálů jinam (pryč, do souboru, na výstup)
• 1>dopis.txt
• Příkaz m>&n
• Chyby + data dohromady
• 1>text.txt 2>&1
• Zařízení = soubor
• Možnost přesměrování výstupu na jiné okno
• > - přepíše
• >> - doplní na konec
Kolony příkazů
• Výstup (1) aktuálního příkazu se vloží jako vstup (0)
následujícího příkazu
• Oddělení znakem ‚|‘
• Vypíše se výstup posledního příkazu
• ypcat passwd | grep novak | cat –n > novakove.txt

More Related Content

Práce s textem v unixu

  • 1. Práce s textem v Unixu Petr Pilař 4. E
  • 2. Příkazy • Příkaz FILE – odhadnutí typu souboru • Příkaz CAT – textový výpis souboru • Příkaz SORT – třídění • Příkaz GREP – vystřižení části výstupu odpovídající vzoru
  • 3. Příkazy • Příkaz WC – počet slov • Příkaz TAIL / HEAD – vypíše se posledních / prvních N řádek, +- • Příkaz CUT – vykrojení znaků (-d<znak>) nebo polí seznamu (-f<seznam>)
  • 4. Regulární výrazy • Regexp, regex či jen RE • Řetězec popisující množinu řetězců • Vyhledávání v textu či jeho validace
  • 5. Atomy • a – „Obyčejné“ znaky zastupují ve vzoru samy sebe. • – zbavuje zvláštního význam znaku (n, r, t,..) • . – tečka zastupuje jeden libovolný znak. • [abc] – právě jeden znak z množiny definované v závorce • [0-9] – interval; [^0-9] – doplněk výrazu • ^ – začátek řádku • $ – konec řádku • < a > – začátek a konec slova (odpovídá hranici mezi slovy)
  • 6. Kvantifikátory • * – Přechozí atom se libovolněkrát opakuje • ? – Předchozí atom se vyskytuje volitelně • + – Předchozí atom se opakuje jednou či vícekrát • {N} – Předchozí atom se vyskytuje právě N-krát • {N,} – Předchozí atom se vyskytuje alespoň N-krát. • {,N} – Předchozí atom se vyskytuje nejvýše N-krát. • {M,N} – Předchozí atom se vyskytuje alespoň M-krát a nejvýše N-krát.
  • 7. Příklady • Text v závorkách (bez vnoření): • (.*) • Celé číslo se znaménkem: • [-+]?[0-9]+ • Decimální číslo (jednoduché, nepřipouští programátorské zápisy typu .14 či 3.): • [-+]?[0-9]+(.[0-9]+)? • Řetězec (neobsahující uvozovky a apostofy) v uvozovkách nebo apostrofech: • (['"])[^'"]*1 • Komentář shellu (celý řádek): • ^s*#.*$ • E-mailová adresa (jednoduchá): • [-+._0-9A-za-z]+@([-0-9A-Za-z]+.)+.[-0-9A-Za-z]+
  • 8. grep • grep <vzor> [soubor] • výpis řádků obsahující zadaný vzor • Přepínače: • -v invertuje smysl (výpis řádků neobsahující vzor) • -i nerozlišuje velká a malá písmena • Příklad: ypcat passwd | grep novak | cat –n > novakove.txt
  • 9. sort • sort [soubor] • Třídění, implicitně alfanumericky od začátku řádky • Přepínače: • -n numerické třídění • -t<znak> definice oddělovače polí (implicitně mezery a tabulator) • -k<n>,<n> třídění podle tého pole tee • tee <soubor> • posílá vstup beze změny na výstup a zároveň do souboru
  • 10. sed • sed [adresa]příkaz[parametry][přepínače] • vstup po řádcích • Příklady výrazů: • 10d # zruší (vynechá) 10 řádku • /^[A-Z]/d # zruší řádky začínající velkým písmenem • s/Jan/Honza/# ve všech řádkách nahradí Jan za Honza • 15,$a # za řádky od 15 do konce vloží řádku *** • *** # a (append) = za řádku, i (insert) = před • Příklad použití: ls -l / | cat –n | sed ´10,15d´ >upravena_data
  • 11. awk #!/bin/awk -f BEGIN{ print "n" printf " %-21s %10sn", "soubor", "delka" print "---------------------------------" } #obyc soubor /^-/{ printf " %-21s %10dn" ,$9,$5 suma=suma+$5 if ($5 > 10000) { print "pozor velke!!!" print $9 > "velke_soubory.txt" } } # END{ print "---------------------------------" printf " Celkem %25dn", suma }
  • 12. Deskriptory a přesměrování • Čísla kanálů • 0 = vstup, 1 = výstup, 2 = chyby • Příkaz m>soubor • Přesměrování kanálů jinam (pryč, do souboru, na výstup) • 1>dopis.txt • Příkaz m>&n • Chyby + data dohromady • 1>text.txt 2>&1 • Zařízení = soubor • Možnost přesměrování výstupu na jiné okno • > - přepíše • >> - doplní na konec
  • 13. Kolony příkazů • Výstup (1) aktuálního příkazu se vloží jako vstup (0) následujícího příkazu • Oddělení znakem ‚|‘ • Vypíše se výstup posledního příkazu • ypcat passwd | grep novak | cat –n > novakove.txt