[GRASS-dev] g.mlist problem
William Kyngesburye
woklist at kyngchaos.com
Tue Sep 18 11:37:31 EDT 2007
It should be. I checked the Gnu sed docs online, and they also say
that you must use \ + real newline in the replacement string. I
wonder why \n works for other platforms?
On Sep 18, 2007, at 10:04 AM, Michael Barton wrote:
> William,
>
> I'm very glad you've identified the problem. But I worry whether this
> solution is portable across platforms.
>
> Michael
>
>
> On 9/18/07 6:47 AM, "William Kyngesburye" <woklist at kyngchaos.com>
> wrote:
>
>> Same happens for me (OSX). I walked thru the script commands
>> manually, and it is indeed messing up on the first sed.
>>
>> I see this in the sed man for Sed Regex info (OSX uses the BSD sed):
>>
>> 2. The escape sequence \n matches a newline character embedded
>> in the
>> pattern space. You can't, however, use a literal newline
>> character
>> in an address or in the substitute command.
>>
>> Later, for the s/ function, it says:
>>
>> A line can be split by substituting a newline character into it.
>> To specify a newline character in the replacement string, precede
>> it with a backslash.
>>
>> Putting a real newline after the \ does the trick:
>>
>> g.list type=$type mapset=$mapset \
>> | grep -v '^-\+$' \
>> | grep -v "files available" \
>> | grep -vi "mapset" \
>> | sed 's/ */\
>> /g' \
>> | grep -v '^$' \
>> | grep "$search" \
>> | sort \
>> | sed -e "s/$/$MAPSET/"
>>
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
All generalizations are dangerous, even this one.
More information about the grass-dev
mailing list