linux_ws2122/chapters/99-awk.tex

135 lines
4.3 KiB
TeX

% ##########################################################################
% ############################ Ü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}