从数据行中仅提取正则表达式路径模式

从数据行中仅提取正则表达式路径模式

考虑到对此数据集的循环,仅提取“/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

相关内容