\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{myocast} \pdfinfo{ /Title (awk-4p.pdf) /Creator (Cheatography) /Author (myocast) /Subject (awk-4p Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{22AB22} \definecolor{LightBackground}{HTML}{F1F9F1} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{awk-4p Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{myocast} via \textcolor{DarkBackground}{\uline{cheatography.com/209743/cs/45157/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}myocast \\ \uline{cheatography.com/myocast} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 30th November, 2024.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{2} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{I/O Statements (cont)}} \tn % Row 0 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{print expr-list \textgreater{}file}} & Prints expressions on file. Each expression is separated by the value of the OFS variable. The output record is terminated with the value of the ORS variable. \tn % Row Count 8 (+ 8) % Row 1 \SetRowColor{white} \{\{nobreak\}\}{\bf{printf fmt, expr-list}} & Format and print. \tn % Row Count 10 (+ 2) % Row 2 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{printf fmt, expr-list \{\{nl\}\}\textgreater{}file}} & Format and print on file. \tn % Row Count 13 (+ 3) % Row 3 \SetRowColor{white} \{\{nobreak\}\}{\bf{system(cmd-line)}} & Execute the command cmd-line, and return the exit status. \tn % Row Count 16 (+ 3) % Row 4 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{fflush({[}file{]})}} & Flush any buffers associated with the open output file or pipe file. If file is missing, then stdout is flushed. If file is the null string, then all open output files and pipes have their buffers flushed. \tn % Row Count 27 (+ 11) % Row 5 \SetRowColor{white} \{\{nobreak\}\}{\bf{print ... \textgreater{}\textgreater{} file}} & Appends output to the file. \tn % Row Count 29 (+ 2) % Row 6 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{print ... | command}} & Writes on a pipe. \tn % Row Count 31 (+ 2) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{I/O Statements (cont) (cont)}} \tn % Row 7 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{print ... |\& command}} & Sends data to a co-pro​cess. \tn % Row Count 2 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{Time Functions}} \tn % Row 0 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{systime()}} & Returns the current time of day as the number of seconds since the Epoch (1970-01-01 00:00:00 UTC on POSIX systems). \tn % Row Count 6 (+ 6) % Row 1 \SetRowColor{white} \{\{nobreak\}\}{\bf{mktime​(da​tespec)}} & Turns datespec into a time stamp of the same form as returned by systime(). The datespec is a string of the form YYYY MM DD HH MM SS {[}DST{]}. \tn % Row Count 13 (+ 7) % Row 2 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{strftime({[}format \{\{nl\}\}{[}, timestamp{]}\{\{nl\}\}{]})}} & Formats timestamp according to the specification in format. The timestamp should be of the same form as returned by systime(). If timestamp is missing, the current time of day is used. If format is missing, a default format equivalent to the output of date(1) is used. \tn % Row Count 27 (+ 14) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{GNU AWK's Command Line Argument Summary}} \tn % Row 0 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{-F fs}} {\emph{or}} \{\{nl\}\}{\bf{-{}-field-separator fs}} & Use fs for the input field separator (the value of the FS predefined variable). \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} \{\{nobreak\}\}{\bf{-v var=val}} {\emph{or}} \{\{nl\}\}{\bf{-{}-assign var=val}} & Assign the value val to the variable var, before execution of the program begins. Such variable values are available to the BEGIN block of an AWK program. \tn % Row Count 12 (+ 8) % Row 2 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{-f program-file}} {\emph{or}} \{\{nl\}\}{\bf{-{}-file program-file}} & Read the AWK program source from the file program-file, instead of from the first command line argument. Multiple -f \{\{nl\}\}(or -{}-file) options may be used. \tn % Row Count 20 (+ 8) % Row 3 \SetRowColor{white} \{\{nobreak\}\}{\bf{-mf NNN}} {\emph{or}} \{\{nl\}\}{\bf{-mr NNN}} & Set various memory limits to the value NNN. The f flag sets the maximum number of fields, and the r flag sets the maximum record size (ignored by gawk, since gawk has no pre-defined limits). \tn % Row Count 30 (+ 10) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{8.4cm}{x{4 cm} x{4 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{8.4cm}}{\bf\textcolor{white}{GNU AWK's Command Line Argument Summary (cont)}} \tn % Row 4 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{-W compat}} {\emph{or}} \{\{nl\}\}{\bf{-W traditional}} {\emph{or}} \{\{nl\}\}{\bf{-{}-compat-{}-traditional}} & Run in compatibility mode. In compatibility mode, gawk behaves identically to UNIX awk; none of the GNU-specific extensions are recognized. \tn % Row Count 7 (+ 7) % Row 5 \SetRowColor{white} \{\{nobreak\}\}{\bf{-W dump-variables{[}=file{]}}} \{\{nl\}\}{\emph{or}} {\bf{-{}-dump-variables{[}=file{]}}} & Print a sorted list of global variables, their types and final values to file. If no file is provided, gawk uses a file named awkvars.out in the current directory. \tn % Row Count 16 (+ 9) % Row 6 \SetRowColor{LightBackground} \{\{nobreak\}\}{\bf{-W help}} {\emph{or}} \{\{nl\}\}{\bf{-W usage}} {\emph{or}} \{\{nl\}\}{\bf{-{}-help}} {\emph{or}} \{\{nl\}\}{\bf{-{}-usage}} & Print a relatively short summary of the available options on the standard output. \tn % Row Count 21 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}