<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I Can Has Linux? &#187; ihatereadingbooks</title>
	<atom:link href="http://icanhaslinux.com/category/ihatereadingbooks/feed/" rel="self" type="application/rss+xml" />
	<link>http://icanhaslinux.com</link>
	<description>Invisible Patent Infringement!</description>
	<lastBuildDate>Mon, 29 Aug 2011 13:37:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>basics in awk</title>
		<link>http://icanhaslinux.com/2008/08/13/basics-in-awk/</link>
		<comments>http://icanhaslinux.com/2008/08/13/basics-in-awk/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 13:48:59 +0000</pubDate>
		<dc:creator>LightningCrash</dc:creator>
				<category><![CDATA[awk]]></category>
		<category><![CDATA[ihatereadingbooks]]></category>

		<guid isPermaLink="false">http://icanhaslinux.com/2008/08/13/basics-in-awk/</guid>
		<description><![CDATA[awk is a very, very useful command-line program that any Linux/Unix ninja should be familiar with. Awk is specifically geared towards processing text, and it was actually a combination of awk and sed that were an inspiration for Perl. To start with, awk has three major elements that you need to be aware of when [...]]]></description>
			<content:encoded><![CDATA[<p>awk is a very, very useful command-line program that any Linux/Unix ninja should be familiar with. Awk is specifically geared towards processing text, and it was actually a combination of awk and sed that were an inspiration for Perl.</p>
<p>To start with, awk has three major elements that you need to be aware of when you&#8217;re working with it. These are the field separator, the pattern, and the action for the pattern.</p>
<p>Your fied separator is obviously what is inbetween the text elements you want to work with. If you open up a terminal and type &#8216;ps -elf&#8217;, you&#8217;ll see that this would just be spaces. Some files, like CSV files, have commas as the separator. Awk can be told what to look for via the -F option on the command-line, or in the program itself. For one-off piping, I prefer to do it via the -F option.</p>
<p>The pattern is much like an  &#8216;if &#8230; then&#8217; statement in other programming languages. If there isn&#8217;t a pattern, the action specified will be applied to all rows of input.</p>
<p>What makes awk handy is that it gives you capabilities that the `cut` command simply can&#8217;t provide.  For instance, if I have a twenty-column CSV and I would like to spit out the third and eleventh column, I can execute the following:</p>
<p><code>awk -F','    '{print $3 FS $11}' file.input</code></p>
<p>The -F&#8217;,&#8217; tells awk that the input fields will be separated by commas. The area enclosed in the braces is the action I talked about earlier. I didn&#8217;t specify a pattern before the action, so the action was applied to every line of input. &#8220;<code>print $3 FS $11</code>&#8221; tells awk to print to the screen the third field of input, the field separator (which we defined as a comma with the -F&#8217;,'), and the eleventh field of input.</p>
<p>If I wanted to do the same, but only print lines where the third field was over a number, say, 110, I could execute the following:</p>
<p><code>awk -F','    '$3 &gt; 110 {print $3 FS $11}'" file.input</code></p>
<p>The pattern before the braces functions much like an &#8220;if &#8230; then&#8221;. If the third field is over 110, awk prints out the third field, the field separator, and the eleventh field.</p>
<p>There is much, much more that you can do with awk, but this should be enough to hint you in the right direction. I know I use awk daily for various tasks related to command-line mischief.  A common thing I use awk for is to manipulate /etc/passwd, where some user account information is stored.</p>
<p>Fortunately, GNU awk is often smart enough to pick up the field separators without specifying the -F option. For instance, /etc/passwd is separated by a colon &#8220;:&#8221;, but GNU awk automatically recognizes this. It&#8217;s worth noting that on some other systems without GNU utilities, awk may behave in ways that you don&#8217;t anticipate.</p>
<p>That&#8217;s it for the moment, just some small tips to get you moving. I&#8217;d recommend picking up a book on AWK. I recommend you pick up a copy of &#8220;The AWK Programming Language&#8221; by Aho, Kernighan and Weinberger. It only makes sense, since they are the creators of AWK. I have also been told that the O&#8217;Reilly AWK book is very good. In addition, the GNU awk is well-documented all over the Internet, so you shouldn&#8217;t be lacking in study material if you put some effort into it.</p>
<p>Until next time!</p>
<p>-LightningCrash</p>
]]></content:encoded>
			<wfw:commentRss>http://icanhaslinux.com/2008/08/13/basics-in-awk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

