注册 登录
编程论坛 Linux教室

求怎样把路径抽出来,随便用什么工具,cut, awk, sed, perl, python都可以,关键是regex 不熟

madfrogme 发布于 2012-11-01 15:34, 1969 次点击
请教大家,我现在须要抽出一些路径,比如

$ ldd `which ls`
        linux-gate.so.1 =>  (0xb77b1000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb7792000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb7777000)
        libacl.so.1 => /lib/libacl.so.1 (0xb776e000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7615000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb75fc000)
        /lib/ld-linux.so.2 (0xb77b2000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb75f8000)
        libattr.so.1 => /lib/libattr.so.1 (0xb75f2000)
须要把 => 后面的 路径抽出来,

/lib/tls/i686/cmov/librt.so.1

/lib/libacl.so.1

等等,谁能帮一下帮,awk, sed什么的不熟,先谢了

说具体一点就是只要以 '/' 开头的那一部分

再说具体一些就是如果第一列 或者是第三例有 '/' 则,把路径打印出来




[ 本帖最后由 madfrogme 于 2012-11-1 16:57 编辑 ]
10 回复
#2
madfrogme2012-11-01 16:31
试了一下,用awk弄出来了,比如
# ldd `which ls`
       linux-gate.so.1 =>  (0xb775a000)
        librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb773b000)
        libselinux.so.1 => /lib/libselinux.so.1 (0xb7720000)
        libacl.so.1 => /lib/libacl.so.1 (0xb7717000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb75be000)
        libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb75a5000)
        /lib/ld-linux.so.2 (0xb775b000)
        libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb75a1000)
        libattr.so.1 => /lib/libattr.so.1 (0xb759b000)

# ldd `which ls` | awk '{if ($1 ~ /\//) print $1; if($3 ~ /\//) print $3 }'

意思是如果第1例中含有 '/' 则打印,如果第3例含有 '/', 则打印

红色的须要特殊处理,所以 有了上面一行的 $1

[ 本帖最后由 madfrogme 于 2012-11-2 17:36 编辑 ]
#3
madfrogme2012-11-01 16:42
最后用 xargs 可以把抽出的路径复制到别处

# ldd `which ls` |awk '{if ($1 ~ /\//) print $1; if($3 ~ /\//) print $3 }' | xargs  -I {} cp {} lib

这是把抽出的路径复制到当前目录下的 lib 目录中
#4
有容就大2012-11-01 19:31
抽取路径? 不懂
这个有什么用啊


#5
zklhp2012-11-01 19:33
emacs录个脚本就好了
#6
madfrogme2012-11-01 22:31
回复 4楼 有容就大
这个东西本身没什么意义,

只是我想用chroot命令做一个根目录环境的时候一连串操作中的一部分。

比如你让用户登录你的ssh服务器,

却只想让用户运行你觉得没问题的命令,

就要弄一个假的根目录,往里面放你觉得没问题的命令,

所以需要把相应的共享函数也要复制过去!

于是就出现怎样抽出路径更快复制的需要了!手机码字累啊!
#7
madfrogme2012-11-01 22:37
以下是引用zklhp在2012-11-1 20:33:06的发言:

emacs录个脚本就好了

Z版真是让我相信emacs是万能的了
#8
zklhp2012-11-02 12:15
只有本站会员才能查看附件,请 登录


实际操作还是挺快的 可惜在gif动画里面显示的真垃圾

我APM250+
#9
zklhp2012-11-02 12:30
多说一句 我看过一些emacs的视频教程 感觉也就是那样 确实没啥非常震撼的 除了一些故意弄出来追求视觉效果的 编辑器嘛 本来就是用来用而不是显摆的 总得来是 emacs作为编辑器还是不错的

再说一句 楼主还在用32位的linux么


[ 本帖最后由 zklhp 于 2012-11-2 12:31 编辑 ]
#10
pangding2012-11-06 09:51
以下是引用madfrogme在2012-11-1 22:37:51的发言:

 
Z版真是让我相信emacs是万能的了

你应该相信能用 awk, sed 这种工具能干的事,vim 和 emacs 不可能干不了。单就处理文本的能力来讲,我觉得 vim 比 emacs 还要强。emacs 神在它的定制和扩展能力上了。
#11
pangding2012-11-06 09:58
以下是引用zklhp在2012-11-2 12:15:42的发言:



实际操作还是挺快的 可惜在gif动画里面显示的真垃圾

我APM250+

膜拜神手速。
1