<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Vidul Nikolaev Petrov: Category programming</title>
    <link>http://www.vidul.com/articles/category/programming</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Getting Negative Number</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;10.01&lt;/span&gt;

&lt;span class="comment"&gt;# the negative equivalent: -10.01&lt;/span&gt;

&lt;span class="ident"&gt;negative&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="ident"&gt;negative&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="punct"&gt;*&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt; &lt;span class="comment"&gt;# or&lt;/span&gt;
&lt;span class="ident"&gt;negative&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt; 
&lt;span class="ident"&gt;negative&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;positive&lt;/span&gt; &lt;span class="comment"&gt;# or &lt;/span&gt;
&lt;span class="ident"&gt;negative&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;---&lt;/span&gt;&lt;span class="ident"&gt;positive&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 28 Oct 2008 08:34:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:aa1b3d4c-2156-4b39-85cd-fa645182cf8f</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/10/28/getting-negative-number</link>
      <category>programming</category>
      <category>numbers</category>
      <trackback:ping>http://www.vidul.com/articles/trackback/91</trackback:ping>
    </item>
    <item>
      <title>Enigma</title>
      <description>&lt;p&gt;&lt;b&gt;Here&amp;#8217;s the mirror&lt;br /&gt;
Behind there is a screen&lt;br /&gt;
Turn around &lt;br /&gt;
On both ways you can get in&lt;br /&gt;
The experience of survival&lt;br /&gt;
Look around just people, can you hear their voice&lt;br /&gt;
Find the one who&amp;#8217;ll guide you to the limits of your choice&lt;br /&gt;
The experience / of survival&lt;br /&gt;
Try to think about it &amp;#8230;&lt;br /&gt;
That&amp;#8217;s the chance to live your life and discover&lt;br /&gt;
Try to think about it&lt;br /&gt;
The experience of survival&lt;br /&gt;
The experience &amp;#8230; &lt;br /&gt;
The experience of survival&lt;br /&gt;
The experience &amp;#8230;&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 09 Jul 2008 16:40:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:fc57e17b-39d5-4c4e-a3aa-ed97a58ca5d8</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/09/enigma</link>
      <category>programming</category>
      <category>Enigma</category>
    </item>
    <item>
      <title>WEB 2.0 In NY</title>
      <description>&lt;p&gt;&lt;a href="http://www.loadinfo.net"&gt;&lt;img src="http://www.vidul.com/files/apple1.png"&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 09 Jul 2008 14:08:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:802543a7-2ec7-43e4-82a5-3ca44bf834ac</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/07/09/web-2-0-in-ny</link>
      <category>programming</category>
      <category>web</category>
      <enclosure type="image/png" url="http://www.vidul.com/files/apple11.png" length="2339"/>
    </item>
    <item>
      <title>Google Chart API</title>
      <description>&lt;p&gt;Charts for a map (in this example I&amp;#8217;ve included Spain, France, Italy and Norway):&lt;br/&gt;&lt;br/&gt;
&lt;img src="http://chart.apis.google.com/chart?cht=t&amp;#38;chtm=europe&amp;#38;chd=s:_&amp;#38;chs=440x220&amp;#38;chco=ffffff,cdcdcd,333333,555555&amp;#38;chld=ESFRITNO&amp;#38;chd=s:Af26&amp;#38;chf=bg,s,EAF7FE"&gt;
&lt;br/&gt;&lt;br/&gt;
&lt;a href="http://code.google.com/apis/chart/"&gt;more about this &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 30 Jun 2008 01:33:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ecb62ac4-cff1-4ca5-91df-674c0806d301</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/06/30/google-chart-api</link>
      <category>programming</category>
      <category>Google</category>
    </item>
    <item>
      <title>cheat sheets</title>
      <description>&lt;p&gt;&lt;a href="http://cheat.errtheblog.com/"&gt;command-line cheat sheets&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;
279 cheat sheets:&lt;br/&gt;
&lt;b&gt;
$cheat sheets&lt;br/&gt;
$cheat unix_text&lt;br/&gt;
&lt;/b&gt;
&lt;div style="font-size:11px;color:#333;"&gt;
  One of Unix&amp;#8217;s most useful features is its large number of text/data
manipulations programs. Some of the more propular include:
&lt;/div&gt;&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;cat - concatenate and display files
cut - remove selected fields from each line of a file
sort - sort and collate lines
uniq - remove or report adjacent duplicate lines
awk - pattern scanning and processing language
sed - stream editor
tr - translate characters
diff - display line-by-line differences between pairs of text files
grep, egrep, fgrep - search a file for a string or regular expression
paste - join corresponding lines of several files, or subsequent lines of one
file
colrm - remove characters from specified columns within each line
expand, unexpand - expand TAB characters to SPACE characters, and vice versa&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Thu, 29 May 2008 18:06:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a04aee11-b8de-4a37-9e95-f85219f0b4b8</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/05/29/cheat-sheets</link>
      <category>programming</category>
      <category>manuals</category>
    </item>
    <item>
      <title>Geerd Wilders: Enough is enough</title>
      <description>&lt;embed src="http://www.dailymotion.com/swf/x4vd6k&amp;#38;v3=1&amp;#38;colors=background:DDDDDD;glow:FFFFFF;foreground:333333;special:FFC300;&amp;#38;related=1" type="application/x-shockwave-flash" width="420" height="336" allowFullScreen="true" allowScriptAccess="always"&gt;&lt;/embed&gt;</description>
      <pubDate>Fri, 28 Mar 2008 14:06:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:084205af-70ae-4882-acc3-154e742050e0</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/03/28/geerd-wilders-enough-is-enough</link>
      <category>programming</category>
      <category>42</category>
    </item>
    <item>
      <title>Scalar || List context</title>
      <description>&lt;b&gt;Perl&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt; $a  = (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;); # $a is &amp;quot;c&amp;quot; - the last element
($a) = (&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;); # $a is &amp;quot;a&amp;quot; - the first element&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;b&gt;Ruby&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt; &lt;span class="ident"&gt;obj&lt;/span&gt;        &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;c&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]&lt;/span&gt; &lt;span class="comment"&gt;# obj is Array - [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;]&lt;/span&gt;
 &lt;span class="ident"&gt;obj&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;c&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;b&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;,&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;c&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;]&lt;/span&gt; &lt;span class="comment"&gt;# obj is String - &amp;quot;a&amp;quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 12 Feb 2008 13:12:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:36d75a0e-9bab-4684-a3a6-abd63e23e314</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/12/scalar-array-context</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>Perl</category>
    </item>
    <item>
      <title>Lotto checking script</title>
      <description>&lt;p&gt;The idea comes from &lt;a href="http://www.waider.ie/hacks/workshop/perl/lotto.pl"&gt;http://www.waider.ie/hacks/workshop/perl/lotto.pl script&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Should I be so wasteful? No:&lt;/p&gt;


&lt;b&gt;irb&lt;/b&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;my_numbers&lt;/span&gt;       &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;4&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;5&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;6&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;
&lt;span class="ident"&gt;winning_numbers&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;3&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;41&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;42&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;43&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt;

&lt;span class="ident"&gt;result&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;6&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;winning_numbers&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt; &lt;span class="ident"&gt;my_numbers&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt;

&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;span class="expr"&gt;#{result}&lt;/span&gt; &lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; 
  &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="keyword"&gt;not&lt;/span&gt; &lt;span class="ident"&gt;result&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;eql?&lt;/span&gt; &lt;span class="number"&gt;0&lt;/span&gt;
    &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hits&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="keyword"&gt;else&lt;/span&gt;
    &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;hit&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 12 Feb 2008 12:16:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:fcb85ee4-c188-4a91-8e23-531e616b16f9</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2008/02/12/lotto-checking-script</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>senseless</category>
    </item>
    <item>
      <title>getting root acccess without sudo</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_C "&gt;#include &amp;lt;sys/types.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;

int main(int argc, char** argv)
{
    int root_id = 0;
    char *command = argv[1];

    if(!command)
        command = &amp;quot;/bin/bash&amp;quot;;

    setuid(root_id);
    system(command);
    exit(0);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;strong&gt;root#&lt;/strong&gt; gcc -o temproot temproot.c&lt;br/&gt;
&lt;strong&gt;root#&lt;/strong&gt; chmod +s temproot&lt;br/&gt;
&lt;strong&gt;nobody$&lt;/strong&gt; alias root=&amp;#8217;temproot &amp;#8220;su &amp;#8211; root&amp;#8221;&amp;#8217;&lt;br/&gt;
&lt;strong&gt;nobody$&lt;/strong&gt; root</description>
      <pubDate>Sat, 29 Dec 2007 08:31:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:488cc02b-d10e-4a33-bff6-bed3be3dee86</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/12/29/getting-root-acccess-without-sudo</link>
      <category>programming</category>
      <category>administration</category>
    </item>
    <item>
      <title>List Values and Arrays</title>
      <description>&lt;p&gt;&lt;b&gt;Perl&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_perl "&gt;($a, $b) = (1, 2);
 @arr    = (1, 2);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Python&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_python "&gt; a, b = 1, 2
 arr  = 1, 2;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Ruby&lt;/b&gt;&lt;br/&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt; &lt;span class="ident"&gt;a&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;b&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="number"&gt;2&lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;*[&lt;/span&gt;&lt;span class="number"&gt;11&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;22&lt;/span&gt;&lt;span class="punct"&gt;]&lt;/span&gt; &lt;span class="comment"&gt;# the same as &lt;/span&gt;
 &lt;span class="ident"&gt;arr&lt;/span&gt;  &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;11&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;22&lt;/span&gt;&lt;span class="punct"&gt;]].&lt;/span&gt;&lt;span class="ident"&gt;flatten&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
the &amp;#8217;*&amp;#8217; example was stolen from &lt;a href="http://ola-bini.blogspot.com/search/label/metaprogramming"&gt;Ola Bini&amp;#8217;s&lt;/a&gt; blog&lt;/p&gt;</description>
      <pubDate>Fri, 30 Nov 2007 07:28:00 -0700</pubDate>
      <guid isPermaLink="false">urn:uuid:f9609b7a-860e-4484-a6ed-81614eca7303</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/11/30/list-values-and-arrays</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>Perl</category>
      <category>shortcuts</category>
    </item>
    <item>
      <title>Opera password recovery</title>
      <description>&lt;p&gt;&lt;a href="http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=8771&amp;#38;filename=Unwand.rar"&gt;Unwand&lt;/a&gt; &amp;#8211; fast and free program for wand password recovery.&lt;/p&gt;</description>
      <pubDate>Mon, 29 Oct 2007 18:44:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:41061b6c-84d7-49d4-a28c-3ef3e2a661e1</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/10/29/opera-password-recovery</link>
      <category>programming</category>
      <category>password</category>
      <category>recovery</category>
      <enclosure type="application/x-rar-compressed" url="http://www.vidul.com/files/Unwand.rar" length="400918"/>
    </item>
    <item>
      <title>Ruby one-liners (file manipulation)</title>
      <description>&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;
&lt;span class="comment"&gt;# number each line of a file&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts &amp;quot;#{$.}\t#{$_}&amp;quot;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print all non-blank lines&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$_.chomp.empty? and next&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# number and print all non-blank lines&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$_.chomp.empty? or print $.,&amp;quot;\t&amp;quot;, $_&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# number and print each blank line&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $. if $_.chomp.empty?&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# reverse order of lines (`tac` style)&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts File.open($&amp;lt;.filename).readlines.reverse&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print matched string from lines, matching the pattern&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $_.scan(/^\w+/)&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;etc&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;passwd&lt;/span&gt;

&lt;span class="comment"&gt;# triple space a file and reverse order of lines&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$,=&amp;quot;\n\n\n&amp;quot;; puts File.readlines($&amp;lt;.filename).reverse.join&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print first line of a file (emulate 'head -1')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $_; break&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$. == 1 or break&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print last line of a file (emulates 'tail -1')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;END{puts $_}&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print last line number (emulates 'wc -l')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;e&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;loop{gets or break}; puts $.&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print only lines that match a regular expression (emulates 'grep')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if not /regex/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print only lines that do not match a regular expression (emulates 'grep -v')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if /regex/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print section of file between two regular expressions, /^root/ and /^nobody/&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $_ if /^root/../^nobody/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print file and remove duplicate, consecutive lines from a file (emulates 'uniq')&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$_.eql? $; or puts $_;$; = $_;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print file except for blank lines&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if $_.chomp.empty?&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if /^\s*$/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if $_.split(/\S+/).size &amp;lt; 2&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print file except for lines, starting with digit (unclear and inefficient)&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;next if (48..57).to_a.include?($_.split(//)[0][0])&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# delete all leading blank lines at top of file&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$,=&amp;quot;$.&amp;quot; if not $_.chomp.empty?; $, or next&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# print section of file from regex to end of file&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$,=&amp;quot;$.&amp;quot; if /regex/; $, or next&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# delete leading and trailing whitespace from each line&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;$_.strip!.sub!(/$/, &amp;quot;\n&amp;quot;)&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $_.strip! + $/&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# delete leading whitespace from the beginning of each line&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;ne&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;puts $_.lstrip! || $_&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;

&lt;span class="comment"&gt;# convert DOS newlines (CR/LF) to Unix format (LF)&lt;/span&gt;
&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;i&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;pe&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;sub(/\r\n/, &amp;quot;\n&amp;quot;)&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="ident"&gt;file&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Fri, 20 Jul 2007 11:11:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:8396e808-a634-4ed6-8530-8b0533a05d5e</guid>
      <author>root</author>
      <link>http://www.vidul.com/articles/2007/07/20/ruby-one-liners-file-manipulation</link>
      <category>programming</category>
      <category>Ruby</category>
      <category>oneliners</category>
      <category>Ruby</category>
    </item>
  </channel>
</rss>
