sed

  1. Dodać do wszystkich plików .py w zadanym katalogu linię #!/usr/bin/env python na początek i ustawić im prawo wykonywania. (Dodatkowo trzeba użyć find).
  2. Wersja (dużo) trudniejsza: nie dodawać linii, jeśli ona już znajduje się na górze pliku. Podpowiedź: Powłoka sh (w tym bash) ma opcję -c.
  3. Napisać skrypt powłoki, który wygeneruje na podstawie szablonu skrypt powłoki, który kopiuje wszystkie pliki .py z katalogu podanego jako parametr do ustalonego katalogu. Ustalony katalog ma być wybierany przy generowaniu skryptu
  4. Za pomocą sed usunąć z pliku .bashrc (lub podobnego) wszystkie linie ustawiające zmienną PS1. Wersja 2: zamiast usuwać, wstawić na początek linii znak komentarza (#)
  5. We wszystkich ułamkach dziesiętnych w pliku wejściowym zamienić kropkę na przecinek. Zamieniać tylko te kropki, które są otoczone cyframi. Pozostałe pozostawiać niemienione. Podpowiedź: poszukać informacji o subexpression matching w sed (i ogólnie w wyrażeniach regularnych).

awk

  1. Wyliczyć średnią wartość pola uid w /etc/passwd (pamiętać o ustawieniu field separator).
  2. Policzyć ilu jest użytkowników o uid >= 1000 i ile o uid < 1000, w jednym przebiegu.
  3. Wypisać na podstawie /etc/passwd linie opisujące użytkowników postaci: Login: Uid:
  4. Pobrać plik iris.data http://archive.ics.uci.edu/ml/datasets/Iris (link Data Folder na stronie).

    1. Wygenerować plik, który dla każdej z linii wejścia (5 kolumn) będzie zawierał dwie: średnią arytmetyczną czterech pierwszych i piątą w niezmienionej postaci.
    2. Wygenerować plik, który zawiera dodatkowo wiersz podsumowania, ze średnimi każdej z czterech kolumn liczbowych i pustą wartość w piątej.
    3. Wartości kolumn 1-4 podane są w cm. Wygenerować wersję z wymiarami w mm. Dodatkowo dopisać jednostkę do liczb.
    4. Wypisać tylko te wiersze, gdzie wartość pierwszej kolumny jest większa od wartości trzeciej kolumny
    5. Utworzyć dwa pliki wyjściowe o ustalonych nazwach. Do jednego skierować linie gdzie pierwsza kolumna >0.5, do drugiego pozostałe.
  5. Napisać skrypt, który łączy wiele sąsiadujących linii komentarza w skrypcie pythona w jedną linię. Na przykład:

    # XYZ
    # XXX
    # ABC
    print("AAA")
    #ABC
    #XYZ

    Będzie zamienione na

    # XYZ XXX ABC
    print("AAA")
    #ABCXYZ
  6. Markdown jest jednym z języków pozwalających na opis strukturalny dokumentu (podział na sekcje, nagłówki, etc.). Dopuszczalne jest kilka sposobów zapisu nagłówków: https://daringfireball.net/projects/markdown/syntax#header Jeden z nich polega na dodaniu pod nagłówkiem linii złożonej z przynajmniej trzech znaków równości, drugi poprzedzenie nagłówka krzyżykiem i spacją:

    Nagłówek pierwszego stopnia
    ===============
    # Nagłówek pierwszego stopnia 

    Napisać skrypt, który zamieni w dokumencie md wszystkie nagłówki w pierwszej formie na nagłówki w drugiej formie. Reszta dokumentu ma pozostać niezmieniona.