考虑到对此数据集的循环,仅提取“/path/file”模式的最简洁方法是什么? (不包括库名称和内存地址)。
ldd /bin/bash
linux-vdso.so.1 (0x00007ffe4e1a5000)
libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007fb4d07de000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb4d05da000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb4d0205000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb4d0d25000)
我的sed/regex
弱得可耻。我看过其他一些 Stack Overflow 答案,但它们似乎都有点不对劲;要么包含除模式之外的内容,要么表达式适用于 Unix 版本,sed
而不适用于 GNU 版本。
答案1
我能够使用grep
扩展正则表达式来完成我认为您想要的事情:
ldd /bin/bash | grep -oE '(\/.+?) '
grep 正在寻找一个文字,/
后跟任何内容(非贪婪).+?
直到任何空格
$ ldd /bin/bash | grep -oE '(\/.+?) '
/lib64/libtinfo.so.5
/lib64/libdl.so.2
/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2