summaryrefslogtreecommitdiff
path: root/web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html')
-rw-r--r--web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html195
1 files changed, 195 insertions, 0 deletions
diff --git a/web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html b/web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html
new file mode 100644
index 0000000..d1955af
--- /dev/null
+++ b/web/lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/index.html
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" >
+<head>
+ <title>Why `sed -i&#8217; exists | ltsBlog</title>
+ <link href="/1/lts.css" rel="stylesheet" type="text/css" media="screen,projection" />
+ <link href="http://lukeshu.ath.cx/1/wordpress/wp-content/themes/lts/style.css" rel="stylesheet" type="text/css" media="all" />
+ <link href="http://lukeshu.ath.cx/1/wordpress/wp-content/themes/lts/widgets.css" rel="stylesheet" type="text/css" media="screen,projection" />
+ <link rel="pingback" href="http://lukeshu.ath.cx/1/wordpress/xmlrpc.php" />
+<link rel="alternate" type="application/rss+xml" title="ltsBlog &raquo; Feed" href="http://lukeshu.ath.cx/1/wordpress/feed/" />
+<link rel="alternate" type="application/rss+xml" title="ltsBlog &raquo; Comments Feed" href="http://lukeshu.ath.cx/1/wordpress/comments/feed/" />
+<link rel="alternate" type="application/rss+xml" title="ltsBlog &raquo; Why `sed -i&#8217; exists Comments Feed" href="http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/feed/" />
+<script type='text/javascript' src='http://lukeshu.ath.cx/1/wordpress/wp-includes/js/l10n.js?ver=20101110'></script>
+<script type='text/javascript' src='http://lukeshu.ath.cx/1/wordpress/wp-includes/js/comment-reply.js?ver=20090102'></script>
+<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://lukeshu.ath.cx/1/wordpress/xmlrpc.php?rsd" />
+<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://lukeshu.ath.cx/1/wordpress/wp-includes/wlwmanifest.xml" />
+<link rel='index' title='ltsBlog' href='http://lukeshu.ath.cx/1/wordpress/' />
+<link rel='start' title='Lesson 1: Bourne Shell Scripting' href='http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/' />
+<link rel='prev' title='Questions about copyright of the deceased' href='http://lukeshu.ath.cx/1/wordpress/2011/02/questions-about-copyright-of-the-deceased/' />
+<link rel='next' title='[Emacs] autopair problems when using term-mode' href='http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/' />
+<meta name="generator" content="WordPress 3.2.1" />
+<link rel='canonical' href='http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/' />
+<link rel='shortlink' href='http://lukeshu.ath.cx/1/wordpress/?p=67' />
+
+</head>
+
+<body>
+ <div class="nocss">
+ <ul>
+ <li><a href="#navigation">Skip to Navigation</a></li>
+ <li><a href="#content">Skip to Content</a></li>
+ <li><a href="#footer">Skip to Disclaimer</a></li>
+ </ul>
+ </div>
+
+
+ <h1><a href="http://lukeshu.ath.cx/1/wordpress/" title="ltsBlog" rel="home">ltsBlog</a></h1>
+
+ <div class="nav"><a class="nocss" id="navigation"></a>
+ <ul>
+ <li><a href="/1/">Home</a></li>
+ <li><a href="/1/FRC/">Robots</a></li>
+ <li><a href="/1/img/">Pictures</a></li>
+ <li><a href="/1/wordpress/">Weblog</a></li>
+ <li><a href="/1/comicjk/viewer.php">Comic JK</a></li>
+ </ul>
+ </div>
+
+
+
+ <div class="sidebar widget-area">
+ <ul class="xoxo">
+<li id="search-2" class="widget-container widget_search"> <form method="get" id="searchform" action="/1/wordpress/" >
+ <div>
+ <label class="screen-reader-text" for="s">Search ltsBlog:</label>
+ <input type="text" value="" name="s" id="s" />
+ <input type="submit" id="searchsubmit" value="Search" />
+ </div>
+ </form>
+</li> <li id="statusnetwidget-4" class="widget-container widget_statusnetwidget"> <span class="widget-title">Me on identi.ca</span> <ul class="statusnet"><li class="statusnet-item">&quot;The darkest places in hell are reserved for those who maintain their neutrality in times of moral crisis.&quot; - Dante Alighieri <span class="statusnet-timestamp"><abbr title="2011/12/13 02:12:01"><a href="http://identi.ca/notice/86765280">2011/12/13</a></abbr></span></li><li class="statusnet-item">Someone egged a bunch of cars in our neighborhood. <span class="statusnet-timestamp"><abbr title="2011/12/03 05:58:48"><a href="http://identi.ca/notice/86136803">2011/12/03</a></abbr></span></li><li class="statusnet-item"><a href="http://identi.ca/group/git">!git</a>. is. such. win. <span class="statusnet-timestamp"><abbr title="2011/11/27 20:32:11"><a href="http://identi.ca/notice/85848970">2011/11/27</a></abbr></span></li><li class="statusnet-item">My favorite sites could get shut down by 1st censorship system for the internet. Must stop it: 11/16 <a href="http://ur1.ca/5qyod">http://ur1.ca/5qyod</a> <span class="statusnet-timestamp"><abbr title="2011/11/16 12:46:11"><a href="http://identi.ca/notice/85359960">2011/11/16</a></abbr></span></li></ul> </li> <li id="recent-posts-2" class="widget-container widget_recent_entries"> <span class="widget-title">Recent Posts</span> <ul>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/fixing-wrong-type-argument-characterp-return-in-emacs/" title="Fixing &#8220;Wrong type argument: characterp, return&#8221; in !Emacs">Fixing &#8220;Wrong type argument: characterp, return&#8221; in !Emacs</a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/" title="[Emacs] autopair problems when using term-mode">[Emacs] autopair problems when using term-mode</a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/" title="Why `sed -i&#8217; exists">Why `sed -i&#8217; exists</a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/02/questions-about-copyright-of-the-deceased/" title="Questions about copyright of the deceased">Questions about copyright of the deceased</a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/" title="Pointers in Java">Pointers in Java</a></li>
+ </ul>
+ </li><li id="recent-comments-2" class="widget-container widget_recent_comments"><span class="widget-title">Recent Comments</span><ul id="recentcomments"><li class="recentcomments"><a href='http://lukeshu.ath.cx/1/wordpress/2011/08/fixing-wrong-type-argument-characterp-return-in-emacs/' rel='external nofollow' class='url'>Fixing &#8220;Wrong type argument: characterp, return&#8221; in !Emacs | ltsBlog</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/#comment-94">[Emacs] autopair problems when using term-mode</a></li><li class="recentcomments"><a href='http://lukeshu.ath.cx' rel='external nofollow' class='url'>lts</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/#comment-58">Lesson 1: Bourne Shell Scripting</a></li><li class="recentcomments"><a href='http://lukeshu.ath.cx' rel='external nofollow' class='url'>lts</a> on <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/#comment-56">Pointers in Java</a></li><li class="recentcomments">Ari Consul on <a href="http://lukeshu.ath.cx/1/wordpress/2011/01/pointers-in-java/#comment-54">Pointers in Java</a></li><li class="recentcomments">Jade Parsons on <a href="http://lukeshu.ath.cx/1/wordpress/2010/09/hello-world/#comment-52">Lesson 1: Bourne Shell Scripting</a></li></ul></li><li id="archives-2" class="widget-container widget_archive"><span class="widget-title">Archives</span> <ul>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/08/' title='August 2011'>August 2011</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/05/' title='May 2011'>May 2011</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/02/' title='February 2011'>February 2011</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2011/01/' title='January 2011'>January 2011</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/11/' title='November 2010'>November 2010</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/10/' title='October 2010'>October 2010</a></li>
+ <li><a href='http://lukeshu.ath.cx/1/wordpress/2010/09/' title='September 2010'>September 2010</a></li>
+ </ul>
+</li><li id="categories-2" class="widget-container widget_categories"><span class="widget-title">Categories</span> <ul>
+ <li class="cat-item cat-item-8"><a href="http://lukeshu.ath.cx/1/wordpress/category/computers/" title="View all posts filed under Computers">Computers</a>
+</li>
+ <li class="cat-item cat-item-7"><a href="http://lukeshu.ath.cx/1/wordpress/category/school-2/essays/" title="View all posts filed under Essays">Essays</a>
+</li>
+ <li class="cat-item cat-item-12"><a href="http://lukeshu.ath.cx/1/wordpress/category/morning-pages/" title="View all posts filed under morning-pages">morning-pages</a>
+</li>
+ <li class="cat-item cat-item-9"><a href="http://lukeshu.ath.cx/1/wordpress/category/computers/programming-lessons/" title="View all posts filed under Programming Lessons">Programming Lessons</a>
+</li>
+ <li class="cat-item cat-item-6"><a href="http://lukeshu.ath.cx/1/wordpress/category/school-2/" title="View all posts filed under School">School</a>
+</li>
+ <li class="cat-item cat-item-1"><a href="http://lukeshu.ath.cx/1/wordpress/category/uncategorized/" title="View all posts filed under Uncategorized">Uncategorized</a>
+</li>
+ </ul>
+</li><li id="meta-2" class="widget-container widget_meta"><span class="widget-title">Meta</span> <ul>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/wp-login.php?action=register">Register</a></li> <li><a href="http://lukeshu.ath.cx/1/wordpress/wp-login.php">Log in</a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/feed/" title="Syndicate this site using RSS 2.0">Entries <abbr title="Really Simple Syndication">RSS</abbr></a></li>
+ <li><a href="http://lukeshu.ath.cx/1/wordpress/comments/feed/" title="The latest comments to all posts in RSS">Comments <abbr title="Really Simple Syndication">RSS</abbr></a></li>
+ <li><a href="http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress.org</a></li>
+ </ul>
+</li><li id="ltshomewidget-3" class="widget-container widget_ltshomewidget"> <ul class="lts_sidebar">
+ <li><a href="http://www.defectivebydesign.org/intel"><img src="http://static.fsf.org/nosvn/dbd/stop-intel-med.png" alt="stop Intel" /></a></li>
+ <li>
+<!-- Beginning of Project Wonderful ad code: -->
+<!-- Ad box ID: 51613 -->
+<script type="text/javascript">
+<!--
+var pw_d=document;
+pw_d.projectwonderful_adbox_id = "51613";
+pw_d.projectwonderful_adbox_type = "4";
+pw_d.projectwonderful_foreground_color = "";
+pw_d.projectwonderful_background_color = "";
+//-->
+</script>
+<script type="text/javascript" src="http://www.projectwonderful.com/ad_display.js"></script>
+<!-- End of Project Wonderful ad code. -->
+</li>
+ </ul>
+</li>
+ </ul>
+ </div><!-- .sidebar -->
+
+
+
+
+ <div class="main"><a class="nocss" id="content"></a>
+
+ <div id="nav-above" class="navigation">
+ <div class="nav-previous"><a href="http://lukeshu.ath.cx/1/wordpress/2011/02/questions-about-copyright-of-the-deceased/" rel="prev"><span class="meta-nav">&larr;</span> Questions about copyright of the deceased</a></div>
+ <div class="nav-next"><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/" rel="next">[Emacs] autopair problems when using term-mode <span class="meta-nav">&rarr;</span></a></div>
+ </div><!-- #nav-above -->
+
+ <div id="post-67" class="post-67 post type-post status-publish format-standard hentry category-computers category-morning-pages">
+ <h2 class="entry-title">Why `sed -i&#8217; exists</h2>
+ <div class="entry-meta">
+ <span class="meta-prep meta-prep-author">Posted on</span> <a href="http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/" title="05:21" rel="bookmark"><span class="entry-date">2011/05/27</span></a> <span class="meta-sep">by</span> <span class="author vcard"><a class="url fn n" href="http://lukeshu.ath.cx/1/wordpress/author/lts/" title="View all posts by lts">lts</a></span>
+ </div><!-- .entry-meta -->
+ <div class="entry-content">
+<p>I&#8217;ve decided to to a morning-pages type thing here, just to get info out. This means that I&#8217;ll be posting 250-ish word weblog post<br />
+snippits sharing whatever, and fairly frequently posting, if this works.</p>
+<p>So, what is the purpose of the <code>-i</code> flag to <code>sed</code>? Simply, it edits the file in place, instead of dumping the edit to stdout.</p>
+<p>Those of you familiar with &#8220;<code>cat -v</code> Considered Harmful&#8221; or just traditional UNIX design will say &#8220;bah, what a useless flag, just use <code>sed 's/regex//' < file > file</code> to write the changes back to the file.</p>
+<p>But there&#8217;s a problem with this. There is a race condition, the file has been opened twice, once for reading, and once for writing. If they get closed in the wrong order, you will end up with an empty file. In my experience this very seldom happens. However, when you have a shell script that usually works, but just occaisionally corrupts your `database&#8217;, you&#8217;ll see why <code>sed -i</code>&#8216;s important.</p>
+
+ </div><!-- .entry-content -->
+ <div class="entry-links">
+
+ </div>
+
+ <div class="entry-utility">
+ This entry was posted in <a href="http://lukeshu.ath.cx/1/wordpress/category/computers/" title="View all posts in Computers" rel="category tag">Computers</a>, <a href="http://lukeshu.ath.cx/1/wordpress/category/morning-pages/" title="View all posts in morning-pages" rel="category tag">morning-pages</a>. Bookmark the <a href="http://lukeshu.ath.cx/1/wordpress/2011/05/why-sed-i-exists/" title="Permalink to Why `sed -i&#8217; exists" rel="bookmark">permalink</a>.
+
+ </div><!-- .entry-utility -->
+ </div><!-- #post-## -->
+
+ <div id="nav-below" class="navigation">
+ <div class="nav-previous"><a href="http://lukeshu.ath.cx/1/wordpress/2011/02/questions-about-copyright-of-the-deceased/" rel="prev"><span class="meta-nav">&larr;</span> Questions about copyright of the deceased</a></div>
+ <div class="nav-next"><a href="http://lukeshu.ath.cx/1/wordpress/2011/08/emacs-autopair-problems-when-using-term-mode/" rel="next">[Emacs] autopair problems when using term-mode <span class="meta-nav">&rarr;</span></a></div>
+ </div><!-- #nav-below -->
+
+
+
+ <div id="comments">
+ <div id="respond">
+ <h3 id="reply-title">Leave a Reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/1/wordpress/2011/05/why-sed-i-exists/#respond" style="display:none;">Cancel reply</a></small></h3>
+ <form action="http://lukeshu.ath.cx/1/wordpress/wp-comments-post.php" method="post" id="commentform">
+ <p class="comment-notes">Your email address will not be published. Required fields are marked <span class="required">*</span></p> <p class="comment-form-author"><label for="author">Name</label> <span class="required">*</span><input id="author" name="author" type="text" value="" size="30" aria-required='true' /></p>
+<p class="comment-form-email"><label for="email">Email</label> <span class="required">*</span><input id="email" name="email" type="text" value="" size="30" aria-required='true' /></p>
+<p class="comment-form-url"><label for="url">Website</label><input id="url" name="url" type="text" value="" size="30" /></p>
+ <p class="comment-form-comment"><label for="comment">Comment</label><textarea id="comment" name="comment" cols="45" rows="8" aria-required="true"></textarea></p> <p class="form-allowed-tags">You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <code>&lt;a href=&quot;&quot; title=&quot;&quot;&gt; &lt;abbr title=&quot;&quot;&gt; &lt;acronym title=&quot;&quot;&gt; &lt;b&gt; &lt;blockquote cite=&quot;&quot;&gt; &lt;cite&gt; &lt;code&gt; &lt;del datetime=&quot;&quot;&gt; &lt;em&gt; &lt;i&gt; &lt;q cite=&quot;&quot;&gt; &lt;strike&gt; &lt;strong&gt; </code></p> <p class="form-submit">
+ <input name="submit" type="submit" id="submit" value="Post Comment" />
+ <input type='hidden' name='comment_post_ID' value='67' id='comment_post_ID' />
+<input type='hidden' name='comment_parent' id='comment_parent' value='0' />
+ </p>
+ </form>
+ </div><!-- #respond -->
+
+ </div><!-- #comments -->
+
+ </div>
+<div class='footer'><a class='nocss' id='footer'></a>
+ <div class="site-generator">
+ <a href="http://wordpress.org/" title="Semantic Personal Publishing Platform" rel="generator" class="site-generator">Powered by WordPress.</a>
+ </div>
+<p class="valid">Valid <a href="http://validator.w3.org/check?uri=http%3A%2F%2Flukeshu.ath.cx%2F1%2Fwordpress%2Findex.php" id="link_validate_html">XHTML</a>
+ and <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Flukeshu.ath.cx%2F1%2Fwordpress%2Findex.php" id="link_validate_css" >CSS</a>.
+ <br /><a href="/0/wordpress/index.php">Show (server side) source</a>
+</p>
+ <p class='copyright'>Copyright &copy; 2010, 2011 Luke Shumaker</p>
+ <p class='license'>Verbatim copying and distribution of
+ this entire article are permitted worldwide, without
+ royalty, in any medium, provided this notice, and the
+ copyright notice, are preserved.</p>
+</div>
+
+</body>
+</html>
+
+