From: Jeff King Date: Sat, 04 Aug 2007 12:40:05 GMT Subject: Re: Help a sed noob Message-ID: <20070804124005.GA15334@sigill.intra.peff.net> In-Reply-To: <20070804121811.GA1605@lapse.madduck.net> On Sat, Aug 04, 2007 at 02:18:11PM +0200, martin f krafft wrote: > The behaviour is absolutely unclear from the manpage and defies my > logic. Can you elaborate a bit, even though this is off-topic? The original sed code in question was: sed -ne '/^URL: */{ s///p q }' "$GIT_DIR/remotes/$1" There are a few things to note: 1. -n means "do not print lines by default" 2. sed addresses consist of an address (in this case a regex meaning "do this for lines that match the regex") and a command 3. The braces start a set of commands, so that for lines matching the address, we do all of the commands. 4. An empty matching portion for a regex means "use the last regex". So this script comes down to: - don't write any lines except the ones we match - find a line that starts with URL: - replace the URL: part with nothing - print the result - quit It could be more simply written as: sed -ne 's/^URL: *//pq' which uses the substitution as an address, but I don't know whether that was allowed in the original sed. -Peff