Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Jan 2004 09:42:32 -0600
From:      Dan Nelson <dnelson@allantgroup.com>
To:        zhangweiwu@realss.com
Cc:        questions@freebsd.org
Subject:   Re: use \000 in sed
Message-ID:  <20040129154232.GB31560@dan.emsphone.com>
In-Reply-To: <LAW11-F18PNBhMPHOuj000322b7@hotmail.com>
References:  <LAW11-F18PNBhMPHOuj000322b7@hotmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Jan 29), Zhang Weiwu said:
> Hello. I wish to see all the files in some pathes in a string.
> 
> Say, I wish to list all files in $PATH and manpath(1)
> 
> What I can think of is to use 
> #manpath | sed "s/:/ /g" |xargs ls
> (This is useful when auto-completing man command in a shell, say, csh).
> 
> This works, but the command is wrong when a path contain a space in it.
> 
> I think a better way is to replace ":" with \000, the "NULL". In this way I 
> can use "xargs -0" to pass all pathes to ls(1)
> #manpath | sed s/:/\000/g" |xargs -0 ls

I'm not sure that sed can process \123-style octal characters, since it
already uses the \ character for backreferences.  Since you're only
replacing one letter, you can use tr:

manpath | tr ':' '\000' | xargs -0 ls 

-- 
	Dan Nelson
	dnelson@allantgroup.com



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040129154232.GB31560>