%
% Unix Shell Kurs Uebungen 
% $Id: uebungen.tex,v 1.3 2003/01/11 16:38:27 andras Exp $
%

\documentclass[12pt, a4paper, final, titlepage]{article}
\usepackage{german}
\usepackage{helvet}
\pagestyle{headings}
\begin{document}
        \begin{titlepage}
                \title{
			Textverarbeitung in der Unix-Shell\\
			"Ubungen
		}

                \author{Peter Keel,\\ 
			Kir\'{a}ly Andr\'{a}s 
		}
        \end{titlepage}
        \maketitle
        \pagebreak

	%
        % Inhaltsverzeichnis erzeugen
        %
        \tableofcontents
        \vspace{10cm}
        \newpage


	\section{Erkl"arungen}
	\begin{itemize}
		\item Unix-Befehle sind immer mit \texttt{dieser Schrift} dargestellt.
		\item Es ist jeweils hilfreich, wenn man die Optionen der ben"otigten Befehle 
		      mit \texttt{man <Befehlsname>} nachschaut ;)
		\item Die einzelnen Teil"ubungen sollten der Reihe nach bearbeitet werden, da sie aufeinander aufbauen. Meistens wird die 
		Kommandokette erweitert.
		\item Die L"osungen zu den einzelnen "Ubungen befinden sich in Kapitel 4
	\end{itemize}

	\section{"Ubungen zur Dateiverwaltung}
	\subsection{Verzeichnis erzeugen}
		Ben"otigte Befehle: \texttt{mkdir}
		\begin{enumerate}
			\item Erzeuge ein neues Verzeichnis ''test\_dir''.
		\end{enumerate}
		
	\subsection{Leere Datei erzeugen}
		Ben"otigte Befehle: \texttt{cd, touch}
		\begin{enumerate}
			\item Wechsle in das Verzeichnis ''test\_dir''.
			\item Erzeuge eine leere Datei ''test.txt''.
		\end{enumerate}

	\subsection{Datei umbenennen/kopieren}
		Ben"otigte Befehle: \texttt{mv}
		\begin{enumerate}
			\item Benenne ''test.txt'' in ''new\_test.txt'' um.
			\item Kopiere ''new\_test.txt'' nach ''test.txt''.
		\end{enumerate}

	\subsection{Datei/Verzeichnis l"oschen}
		Ben"otigte Befehle \texttt{rm, rmdir}
		\begin{enumerate}
			\item L"osche ''test.txt'' und ''new\_test.txt''.
			\item L"osche das Verzeichnis ''test\_dir''.
		\end{enumerate}

	\section{"Ubungen zu den Unix Texttools}
	
	\subsection{Texte formatieren}
	Ben"otigte Befehle: \texttt{fold}
	\begin{enumerate}
		\item Formatiere den Text ''COPYING'' so, dass nicht mehr\\ 
		      alles auf einer Zeile ist.
		\item Was f"allt Dir auf?
		\item Wie kann man diesen Effekt beheben?
	\end{enumerate}
	
	\subsection{Sortieren}
	Ben"otigte Befehle: \texttt{sort}
	\begin{enumerate}
		\item Sortiere die Datei ''steuerfuesse.txt'' nach:
			\begin{enumerate}
				\item der BFS Nummer (Kolonne 1)
				\item dem Steuerfuss absteigend und \\
				      aufsteigend (Kolonne 3)
				\item alphabetisch nach dem Gemeindenamen\\
				      absteigend und aufsteigen
				\item nach dem Steuerfuss und alphabetisch nach dem Namen,\\
				      absteigend und aufsteigend
			\end{enumerate}
		\item Was f"allt Dir bei b) und d) auf?
	\end{enumerate}

	\subsection{W"orter z"ahlen}
	Ben"otigte Befehle: \texttt{wc}
	\begin{enumerate}
		\item Wieviel W"orter gibt es in ''COPYING''?
		\item Wieviele Zeilen gibt es in ''COPYING''?
		\item Wieviele Zeilen hat es in ''COPYING'', wenn man ihn mit fold\\ 
		      so bearbeitet, dass keine W"orter verst"ummelt werden?
	\end{enumerate}

	\subsection{Anfang und Ende einer Datei}
	Ben"otigte Befehle: \texttt{head, tail}
	\begin{enumerate}
		\item Welche sind die ersten 15 Zeilen von ''steuerfuesse.txt''?
		\item Welche sind die letzten 15 Zeilen von ''steuerfuesse.txt''?
	\end{enumerate}

	\subsection{W"orter finden}
	Ben"otigte Befehle: \texttt{grep}
	\begin{enumerate}
		\item Welche Orte in ''steuerfuesse.txt'' enden auf ''-ikon''?
		\item Welche Orte in ''steuerfuesse.txt'' enden auf ''-ikon'', aber nicht auf ''-tikon''??
	\end{enumerate}

	\subsection{Dateien zerteilen}
	Ben"otigte Befehle: \texttt{split}
	\begin{enumerate}
		\item Zerlege ''steuerfuesse.txt'' in Dateien, die je 10 Zeilen haben.
	\end{enumerate}

	\subsection{Histogramm}
	Ben"otigte Befehle: \texttt{tr, sort, uniq} 
	\begin{enumerate}
		\item Zerlege ''COPYING'' so, dass jedes Wort auf eine Linie kommt.\\
   		      Tip: Alles, was kein Buchstabe zwischen A-Z und a-z ist soll durch '$\backslash$012' ersetzt werden.
		\item Erg"anze die Befehlskette so, dass die Ausgabe alphabetisch (ohne R"ucksicht auf Gross-/Kleinschreibung) 
		      sortiert wird
		\item Erg"anze die Befehlskette mit dem Befehl so, dass nun vor jedes Wort die H"aufigkeit gesetzt wird.\\
   		      Die Gross-und Kleinschreibung sollte wiederum ignoriert werden.
		\item Zu guter Letzt, sollte die Ausgabe wiederum alphabetisch nach den W"ortern sortiert werden.
	\end{enumerate} 

	\section{L"osungen}

	\subsection{Verzeichnis erzeugen}
		\begin{enumerate}
			\item \texttt{mkdir test\_dir}
		\end{enumerate}
		
	\subsection{Leere Datei erzeugen}
		\begin{enumerate}
			\item \texttt{cd test\_dir}
			\item \texttt{touch test.txt}
		\end{enumerate}

	\subsection{Datei umbenennen/kopieren}
		\begin{enumerate}
			\item \texttt{mv test.txt neu\_test.txt}
			\item \texttt{cp new\_test.txt test.txt}
		\end{enumerate}

	\subsection{Datei/Verzeichnis l"oschen}
		\begin{enumerate}
			\item \texttt{rm test.txt new\_test.txt}
			\item \texttt{rmdir test\_dir}
		\end{enumerate}


	\subsection{Texte formatieren}
		\begin{enumerate}
			\item \texttt{fold COPYING}
			\item Trennungen gehen oft mitten durch die W"orter
			\item \texttt{fold -s COPYING}
		\end{enumerate}

	\subsection{Sortieren}
		\begin{enumerate}
			\item \texttt{sort -n steuerfuesse.txt}
			\item \texttt{sort +2n steuerfuesse.txt / sort +2rn steuerfuesse.txt} 
			\item \texttt{sort +1 steuerfuesse.txt / sort +1r steuerfuesse.txt}
			\item \texttt{sort +2n +1 steuerfuesse.txt}
		\end{enumerate}
	
	\subsection{W"orter z"ahlen}
		\begin{enumerate}
			\item \texttt{wc -w COPYING}
			\item \texttt{wc -l COPYING} (1)
			\item \texttt{fold -s COPYING $\vert$ wc -l} (239)
		\end{enumerate}
	
	\subsection{Anfang und Ende einer Datei}
		\begin{enumerate}
			\item \texttt{head -n 15 steuerfuesse.txt}
			\item \texttt{tail -n 15 steuerfuesse.txt}
		\end{enumerate}

	\subsection{W"orter finden}
		\begin{enumerate}
			\item \texttt{grep ikon steuerfuesse.txt}
			\item \texttt{grep ikon steuerfuesse.txt $\vert$ grep -v tikon}
		\end{enumerate}

	\subsection{Dateien zerteilen}
		\begin{enumerate}
			\item \texttt{split -l 10 steuerfuesse.txt}
		\end{enumerate}
	
	\subsection{Histogramm}
	\begin{enumerate}
		\item \texttt{cat COPYING $\vert$ tr -sc A-Za-z '$\backslash$012'}
		\item \texttt{cat COPYING $\vert$ tr -sc A-Za-z '$\backslash$012' $\vert$ sort -f}
		\item \texttt{cat COPYING $\vert$ tr -sc A-Za-z '$\backslash$012' $\vert$ sort -f $\vert$ uniq -ic}
		\item GNU \texttt{uniq}:\\
		      \texttt{cat COPYING $\vert$ tr -sc A-Za-z '$\backslash$012' $\vert$ sort -f $\vert$\\
		              \hspace*{2.7cm} uniq -ic $\vert$ sort +1f}\\
		     Mac OS X \texttt{uniq}:\\
		      \texttt{cat COPYING $\vert$ tr -sc A-Za-z '$\backslash$012' $\vert$ sort -f $\vert$\\
		              \hspace*{2.7cm} tr A-Z a-z $\vert$ uniq -c $\vert$ sort +1f}
	\end{enumerate} 
\end{document}
