| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1969 人关注过本帖
标题:求怎样把路径抽出来,随便用什么工具,cut, awk, sed, perl, python都可以, ...
取消只看楼主 加入收藏
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
结帖率:98.63%
收藏
已结贴  问题点数:20 回复次数:4 
求怎样把路径抽出来,随便用什么工具,cut, awk, sed, perl, python都可以,关键是regex 不熟
请教大家,我现在须要抽出一些路径,比如

$ 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 编辑 ]
搜索更多相关主题的帖子: 工具 python 
2012-11-01 15:34
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
试了一下,用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 编辑 ]

The quieter you become, the more you can hear
2012-11-01 16:31
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
最后用 xargs 可以把抽出的路径复制到别处

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

这是把抽出的路径复制到当前目录下的 lib 目录中

The quieter you become, the more you can hear
2012-11-01 16:42
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 4楼 有容就大
这个东西本身没什么意义,

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

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

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

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

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

于是就出现怎样抽出路径更快复制的需要了!手机码字累啊!

The quieter you become, the more you can hear
2012-11-01 22:31
madfrogme
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用zklhp在2012-11-1 20:33:06的发言:

emacs录个脚本就好了

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

The quieter you become, the more you can hear
2012-11-01 22:37
快速回复:求怎样把路径抽出来,随便用什么工具,cut, awk, sed, perl, python都 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011830 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved