From owner-freebsd-questions@FreeBSD.ORG Fri Feb 6 23:22:06 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 595111065672 for ; Fri, 6 Feb 2009 23:22:06 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: from email1.allantgroup.com (email1.emsphone.com [199.67.51.115]) by mx1.freebsd.org (Postfix) with ESMTP id 0A8628FC23 for ; Fri, 6 Feb 2009 23:22:05 +0000 (UTC) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (dan.emsphone.com [199.67.51.101]) by email1.allantgroup.com (8.14.0/8.14.0) with ESMTP id n16NM44f071497 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 6 Feb 2009 17:22:05 -0600 (CST) (envelope-from dan@dan.emsphone.com) Received: from dan.emsphone.com (localhost [127.0.0.1]) by dan.emsphone.com (8.14.3/8.14.3) with ESMTP id n16NLuZ9092285 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 6 Feb 2009 17:22:04 -0600 (CST) (envelope-from dan@dan.emsphone.com) Received: (from dan@localhost) by dan.emsphone.com (8.14.3/8.14.3/Submit) id n16NLoBl091985; Fri, 6 Feb 2009 17:21:50 -0600 (CST) (envelope-from dan) Date: Fri, 6 Feb 2009 17:21:40 -0600 From: Dan Nelson To: Adam Vande More Message-ID: <20090206232129.GB75180@dan.emsphone.com> References: <498CBEBE.7080702@gmail.com> <20090206225619.GA75180@dan.emsphone.com> <498CC0FC.1040706@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <498CC0FC.1040706@gmail.com> X-OS: FreeBSD 7.1-STABLE User-Agent: Mutt/1.5.18 (2008-05-17) X-Virus-Scanned: ClamAV version 0.94.1, clamav-milter version 0.94.1 on email1.allantgroup.com X-Virus-Status: Clean X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (email1.allantgroup.com [199.67.51.78]); Fri, 06 Feb 2009 17:22:05 -0600 (CST) X-Scanned-By: MIMEDefang 2.45 Cc: freebsd-questions@freebsd.org Subject: Re: insert new line in files X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Feb 2009 23:22:06 -0000 In the last episode (Feb 06), Adam Vande More said: > Dan Nelson wrote: > > In the last episode (Feb 06), Adam Vande More said: > > > >> I want to insert a new line of text at a certain position in certain > >> files recursively under a directory. More specifically, I want text > >> like this: > >> > >> include('/usr/home/www/imp-sites/default_inventory.php'); > >> > >> to be put into file X at line 37 where file X appears in ./subdir1, > >> .subdir2 etc. There are many subdirs or I'd just do it by hand. > >> > >> I've done stuff like this before with the rpl script and it works well > >> as long as there aren't any special characters in the strings. So I > >> assumed I finally hit the point where I'm forced to learn something > >> like sed or awk and tried some examples with sed but I can't figure out > >> what I'm doing wrong. > >> > >> I get results like this: > >> > >> sed '5i\test' test.txt > >> sed: 1: "5i\test": extra characters after \ at the end of i command > > > > You want: > > > > sed -e '5i\ > > test' test.txt > > > > i.e. a linebreak after the backslash. > > I had actually tried that too: > > > sed -e '5i\ > ? test' text.txt > sed: 1: "5i > test > ": command i expects \ followed by text I don't see a backslash in the error message, which means something ate it. Are you running this command from something other than the commandline or a plain sh script? If you're calling this from another scripting language (via system() or popen() or something similar), you probably have to double the backslash so whatever's parsing it out passes one through to sed. -- Dan Nelson dnelson@allantgroup.com