Zeb Packard wrote:
> On 1/20/07, Nadav Vinik <[EMAIL PROTECTED]> wrote:
>
>> Do you have script like that?
>>
>> since It user readable but it harder to parse in simple regular expression:
>>
>> $ ldd /bin/bash
>> linux-gate.so.1 => (0xffffe000)
>> libreadline.so.5 => /lib/libreadline.so.5 (0xb7f6c000)
>> libhistory.so.5 => /lib/libhistory.so.5 (0xb7f64000)
>> libncurses.so.5 => /lib/libncurses.so.5 (0xb7f22000)
>> libdl.so.2 => /lib/libdl.so.2 (0xb7f1e000)
>> libc.so.6 => /lib/libc.so.6 (0xb7df4000)
>> /lib/ld-linux.so.2 (0xb7fb7000)
>>
>
> No I don't but,
Without understanding why you want this, a quick stab with (g)awk and
sed leads to:
$ ldd `which bash` | sed -e 's/([^ ]*)//' -e 's/ //g' | awk -F=\>
'$2!="" {print $2}'
/lib/libtermcap.so.2
/lib/libdl.so.2
/lib/libc.so.6
Where /lib/ld-linux.so.2 and linux-gate.so.1 are ignored.
The first sed expression removes the (0xb7f6c000) part.
The second sed expression removes whitespace (so you don't get blank
lines with awk later).
The awk -F=\> specifies a field separator of => (the default is " ").
The rest of the awk will show the second term of an input line split by
=> (ie. the bit we want), if this is not empty
I'm no sed/awk guru so it might be possible to clean this up, although
as it is, for me, this qualifies as a "one-liner" :)
If you want the output to be alphabetical pipe the above to `sort`.
If you want this in a script (with sorting) try:
#!/bin/bash
LDD=/usr/bin/ldd
SED=/bin/sed
AWK=/usr/bin/awk
SORT=/bin/sort
if [ -r "$1" ]; then
$LDD $1 | $SED -e 's/([^ ]*)//' -e 's/ //g' | $AWK -F=\> '$2!=""
{print $2}' | $SORT
fi
Where the if [ -r "$1" ] bit checks if the argument passed to the script
is a readable file.
HTH
Amadeus
--
http://linuxfromscratch.org/mailman/listinfo/lfs-support
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page