% ########################################################################## % ############################ Übungsblatt AWK ############################# % ########################################################################## \section{AWK} \label{sec:awk} % ############################### Aufgabe 01 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe01} Geben Sie alle Zeilen der Datei \texttt{/bin/passwd} mithilfe von awk aus. \subsubsection*{Lösung} \label{sec:awk.aufgabe01.loesung} % \inputbash{./awk/01-aufgabe.sh} % ############################### Aufgabe 02 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe02} Gebem Sie von allen Benutzern den username, badname und die login shell aus. Greifen Sie dazu erneut auf die Datei \texttt{/etc/passwd} zu. Die Ausgabe soll ähnlich wie die Tabelle \ref{tbl:awk.aufgabe02.beispielausgabe} aussehen. \begin{table}[H] \begin{tabularx}{\textwidth}{X|X|X} \textbf{user} & \textbf{badname} & \textbf{shell} \\ \hline\hline root & & \texttt{/bin/bash} \\ postfix & & \texttt{/bin/nologin} \\ markus & Markus Pesch & \texttt{/bin/bash} \\ $[$\dots$]$ & $[$\dots$]$ & $[$\dots$]$ \\ \end{tabularx} \caption{AWK - Beispielsausgabe} \label{tbl:awk.aufgabe02.beispielausgabe} \end{table} \subsubsection*{Lösung} \label{sec:awk.aufgabe02.loesung} % \inputbash{./awk/02-aufgabe.sh} % ############################### Aufgabe 03 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe03} Modifizieren Sie Aufgabe \ref{sec:awk.aufgabe02}, sodass nur Benutzer mit einer UID größer gleich 1000 ausgegeben werden. \subsubsection*{Lösung} \label{sec:awk.aufgabe03.loesung} % \inputawk{./awk/03-aufgabe.awk} % \inputbash{./awk/03-aufgabe.sh} % ############################### Aufgabe 04 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe04} Gebe Sie alle Zeilen der Datei \texttt{/etc/passwd} zwischen fünf und zehn aus. Ergänzen Sie die Tabelle um eine Spalte. Die neue Spalte enthält die Zeilennummer. \subsubsection*{Lösung} \label{sec:awk.aufgabe04.loesung} % \inputawk{./awk/04-aufgabe.awk} % \inputbash{./awk/04-aufgabe.sh} % ############################### Aufgabe 05 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe05} Modifiziere Sie die Aufgabe \ref{sec:awk.aufgabe04}, sodass die logischen Entscheidungen in eine Funktion ausgelagert werden. \subsubsection*{Lösung} \label{sec:awk.aufgabe05.loesung} % \inputawk{./awk/05-aufgabe.awk} % \inputbash{./awk/05-aufgabe.sh} % ############################### Aufgabe 06 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe06} Lesen Sie die Datei \texttt{credit\_master.csv} ein. Die Datei enthält unerwünschte Leerzeichen. Korrigieren Sie diese Datensätze indem Sie die unerwünschten Leerzeichen entfernen. Als boolsche Variablen sind ausschließlich ja und nein akzeptabel. Entfernen Sie auch hier die Datensätze, deren boolsche Variablen nicht übereinstimmen. Die validen Datensätze sollen in die Datei \texttt{csv/credit\_master\_cleaned.csv} gespeichert werden. \subsubsection*{Lösung} \label{sec:awk.aufgabe06.loesung} % \inputawk{./awk/06-aufgabe.awk} % \inputbash{./awk/06-aufgabe.sh} % ############################### Aufgabe 06 ############################### \subsection{Aufgabe} \label{sec:awk.aufgabe07} Lesen Sie die Datei \texttt{credit\_master\_cleaned.csv} ein. Erstellen Sie für jede Zeile ein passendes SQL-Statement, um die Zeile in die Tabelle \texttt{credit\_master} zu überführen. Geben Sie zu Beginn das SQL-Statement zum erstellen der notwendigen Tabelle aus. Speichern Sie ihre SQL-Statements in der Datei \texttt{credit\_master\_cleaned.sql} ab. Ob Sie nun die SQL-Statements in der Oracle, Maria, MySQL, Postgres oder SQLite Notation erstellen ist ihnen überlassen, jedoch verwenden Sie den passenden boolschen Datentyp je nach Datenbank, um die boolschen Variablen zu überführen. Verwenden Sie sofern möglich ihre eigene \texttt{credit\_master\_cleaned.csv} Datei. \subsubsection*{Lösung} \label{sec:awk.aufgabe07.loesung} % \inputawk{./awk/07-aufgabe.awk} % \inputbash{./awk/07-aufgabe.sh}