135 lines
4.3 KiB
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}
|