[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