Recent Changes - Search:

Oktatás

* Programozás 1
  + feladatsor
  + GitHub oldal

* Szkriptnyelvek
  + feladatsor
  + quick link

Teaching

* Programming 1 (BI)
  ◇ exercises
  ◇ quick link

teaching assets


Félévek

* 2024/25/2
* archívum


Linkek

* kalendárium
   - munkaszüneti napok '20
* tételsorok
* jegyzetek
* szakdolgozat / PhD
* ösztöndíjak
* certificates
* C lang.
* C++
* C#
* Clojure
* D lang.
* Java
* Nim
* Scala


[ edit | logout ]
[ sandbox | passwd ]

Py3 /

20250603b

Szűrőkkel kapcsolatos feladatok

Implementáljuk a következő szűrőket. (Lustaságból ezeket nem írtam át magyarra.)

(1) between: Print lines between <start_line> and <end_line> [incl.]

    $ cat 123.txt
    one
    two
    three

    $ cat 123.txt | between 2 3
    two
    three

(2) bin: Decimal number to binary

    $ echo 2025 | bin
    0b11111101001

    $ echo 2025 | bin | unbin
    2025

(3) border: Draw border around text

    $ echo "Section 1" | border
    #################
    ##  Section 1  ##
    #################

    $ echo "Section 1" | border '+'
    +++++++++++++++++
    ++  Section 1  ++
    +++++++++++++++++

(4) capitalize: Convert to capitalized text

    $ echo "hEllO" | capitalize
    Hello

(5) collapse: Collapse multiple whitespaces into single space

    $ echo "    .aa    bb.    " | quotes
    '    .aa    bb.    '

    $ echo "    .aa    bb.    " | collapse
    .aa bb.

    $ echo "    .aa    bb.    " | collapse | quotes
    '.aa bb.'

(6) dedup: Remove duplicate lines and keep the original order

    $ cat file.txt
    dd
    bb
    dd  # duplicate
    aa
    aa  # duplicate
    bb  # duplicate

    $ cat file.txt | dedup
    dd
    bb
    aa

In the first example, "# duplicate" is just a note, not part of the file.

(7) dups: Find duplicate lines

    $ cat file.txt
    dd
    bb
    dd  # duplicate
    aa
    aa  # duplicate
    aa  # duplicate

    $ cat file.txt | dups
    dd
    aa
    aa

    $ cat file.txt | dups | dedup
    dd
    aa

In the first example, "# duplicate" is just a note, not part of the file.

dups will print all the duplicates, even several times. If you want to see a duplicate just once, then combine it with the dedup filter.

(8) ex.title: Extract HTML title from a webpage

    $ curl -s https://fishshell.com/ | ex.title
    fish shell

This result is extracted from the HTML part "<title>fish shell</title>".

(9) filesize: Convert filesize [bytes] to human-readable format

    $ echo 123456 | filesize
    120.56 KB

(10) freq: Word frequency [simple, case-insensitive]

    $ cat words.txt
    aa bb aa aa cc cc dd

    $ cat words.txt | freq
    aa: 3
    cc: 2
    bb: 1
    dd: 1

(11) getcol: Split the input on whitespace and print the column indicated

    $ echo 1 2 | getcol 2
    2

(12) getrow: Print the row of the input indicated

    $ seq 3
    1
    2
    3

    $ seq 3 | getrow 2
    2

(13) hex: Decimal number to hex

    $ echo 2025 | hex
    0x7e9

    $ echo 2025 | hex | unhex
    2025

(14) joinlines: Join the input lines with a separator

    $ cat text.txt
    aaa
    bbb
    ccc

    $ cat text.txt | joinlines
    aaabbbccc

    $ cat text.txt | joinlines ", "
    aaa, bbb, ccc

(15) len: Length of a string

    $ echo "hello" | len
    5

(16) longest: Length of the longest line

    $ cat main.c | longest
    22

(17) lower: Convert to lowercase

    $ echo "hEllO" | lower
    hello

    $ echo "hEllO" | lower | upper
    HELLO

(18) morse: Convert text to Morse code [e.g., 'SOS' → '… --- …']

    $ echo "SOS Titanic" | morse
    ... --- ... / - .. - .- -. .. -.-.

    $ echo "SOS Titanic" | morse | unmorse
    SOS TITANIC

(19) noaccents: Remove accents [á → a, etc.]

    $ echo "László" | noaccents
    Laszlo

(20) nonempty: Remove empty lines

    $ cat main.c
    #include <stdio.h>

    int main()
    {
        printf("hello\n");

        return 0;
    }

    $ cat main.c | nonempty
    #include <stdio.h>
    int main()
    {
        printf("hello\n");
        return 0;
    }

(21) obfuscate: Replace letters with similar-looking symbols [e → 3, a → @, etc.]

    $ echo "This is just a sentence." | obfuscate
    7h1$ 1$ ju$7 @ $3n73nc3.

(22) oct: Decimal number to octal

    $ echo 2025 | oct
    0o3751

    $ echo 2025 | oct | unoct
    2025

(23) p.allext: Path [/usr/lib/a.tar.gz → .tar.gz]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.allext
    .tar.gz

(24) p.ext: Path [/usr/lib/a.tar.gz → .gz]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.ext
    .gz

(25) p.fname: Path [/usr/lib/stuff.tar.gz → stuff]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.fname
    stuff

(26) p.name: Path [/usr/lib/python2.5/gopherlib.py → gopherlib.py]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.name
    stuff.tar.gz

(27) p.parent: Path [/usr/lib/python2.5/gopherlib.py → /usr/lib/python2.5]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.parent
    /usr/lib/python2.5

(28) p.stem: Path [/usr/lib/python2.5/gopherlib.py → gopherlib]

    $ echo /usr/lib/python2.5/stuff.tar.gz | p.stem
    stuff.tar

(29) prettyjson: Pretty-print JSON

    $ cat example.json
    { "title": "Hackers", "year": 1995 }

    $ cat example.json | prettyjson
    {
        "title": "Hackers",
        "year": 1995
    }

(30) prettynum: Prettify a number

    $ echo 12345679 | prettynum
    12,345,679

    $ echo 12345679 | prettynum '_'
    12_345_679

(31) quotes: Add quotes around the input

    $ echo "hello"
    hello

    $ echo "hello" | quotes
    'hello'

(32) randomcase: Alternate case randomly

    $ echo "Hello World" | randomcase
    heLLo woRLd

    $ echo "Hello World" | randomcase
    HEllo WorLD

(33) randomline: Select a non-empty random line from input

    $ cat 123.txt
    one
    two
    three

    $ cat 123.txt | randomline
    two

    $ cat 123.txt | randomline
    one

(34) repeat: Repeat a text <n> times

    $ echo "*" | repeat 5
    *****

(35) replace: Replace <old> with <new>

    $ echo "cat dog cat cat" | replace cat kitten
    kitten dog kitten kitten

(36) reverse: Reverse a string

    $ echo "hello" | reverse
    olleh

    $ echo "hello" | reverse | reverse
    hello

If you pass it the content of a text file, it reads the whole content of the file and reverses the whole content.

(37) rot: Rotate letters with with <n> positions

    $ echo "Fish" | rot 2
    Hkuj

    $ echo "Fish" | rot -2
    Dgqf

    $ echo "Fish" | rot 2 | rot -2
    Fish

    $ echo "Fish" | rot 13
    Svfu

    $ echo "Fish" | rot 13 | rot13
    Fish

Letters of the English alphabet are rotated by n positions. n can be negative too, in which case letters are rotated left.

(38) shuffle: Shuffle characters in each line

    $ echo "12345678" | shuffle
    14857362

    $ echo "12345678" | shuffle
    12563487

(39) skip: Skip the first <n> lines of stdin

    $ seq 5
    1
    2
    3
    4
    5

    $ seq 5 | skip 2
    3
    4
    5

(40) swapcase: Swap lower- and uppercase

    $ echo "Hello World" | swapcase
    hELLO wORLD

(41) take: Take the first <n> lines of stdin

    $ seq 5
    1
    2
    3
    4
    5

    $ seq 5 | take 3
    1
    2
    3

(42) title: Convert to title case

    $ echo "hello world" | title
    Hello World

(43) trim: Trim leading/trailing whitespace

    $ echo "     aa bb    " | trim
    aa bb

    $ echo "     aa bb    " | trim | len
    5

(44) typewriter: Print like a typewriter

    $ cat main.c | typewriter
    #include <stdio.h>

    int main...

The content of the file is printed character by character, with some delay, similarly to a typewriter.

(45) unbin: Binary number to decimal

    $ echo 1110 | unbin
    14

    $ echo 1110 | unbin | bin
    0b1110

(46) unhex: Hex number to decimal

    $ echo ff | unhex
    255

    $ echo ff | unhex | hex
    0xff

(47) unmorse: Convert Morse code to text [e.g., '… --- …' → 'SOS']

    $ echo "- .. - .- -. .. -.-." | unmorse
    TITANIC

    $ echo "- .. - .- -. .. -.-." | unmorse | morse
    - .. - .- -. .. -.-.

(48) unoct: Octal number to decimal

    $ echo 755 | unoct
    493

    $ echo 755 | unoct | oct
    0o755

(49) upper: Convert to uppercase

    $ echo "hEllO" | upper
    HELLO

    $ echo "hEllO" | upper | lower
    hello

(50) words: Split input into words

    $ cat file.txt
    aa      bb     cc
    dd

    $ cat file.txt | words
    aa
    bb
    cc
    dd
Cloud City

  

Blogjaim, hobbi projektjeim

* The Ubuntu Incident
* Python Adventures
* @GitHub
* heroku
* extra
* haladó Python
* YouTube listák


Debrecen | la France


[ edit ]

Edit - History - Print *** Report - Recent Changes - Search
Page last modified on 2025 June 04, 13:16