【发布时间】:2020-10-23 20:35:47
【问题描述】:
我有一个缓存文件,其中包含 Linux 文件的文本和路径。 我想使用 Linux 正则表达式提取这些文件,但我不知道该怎么做。 以下是缓存文件的示例:
/usr/bin/mk_cmds (not prelinkable)
/usr/bin/gcov:
/lib/libc-2.5.so [0xfff88e55]
/lib/ld-2.5.so [0x7e786fcc]
/usr/lib/rpm/rpmdeps:
/usr/lib/librpmbuild-4.4.so [0xdb141354]
/usr/lib/librpm-4.4.so [0x4d8c8840]
现在这是我要提取的内容:
/usr/bin/mk_cmds
/usr/bin/gcov
/lib/libc-2.5.so
/lib/ld-2.5.so
/usr/lib/rpm/rpmdeps
/usr/lib/librpmbuild-4.4.so
/usr/lib/librpm-4.4.so
我尝试了一些方法,但都不起作用(使用 grep):
^(.*/)?(?:$|(.+?)(?:(\.[^.]*$)|$))
'(\/.+?) '
你知道我该怎么做吗?我尝试了几件事,但没有任何效果。 非常感谢
【问题讨论】:
-
我建议您添加更多与您的问题相关的标签,例如
regex以及您提取它们的方式(bash、python等) -
@Armion : 你传递给 grep 的标志是什么?
grep可以处理 3 种不同的正则表达式。例如,您使用的+不适用于grep 的basic 正则表达式。请参阅 grep 中的选项-E和-P。 -
文件路径中是否有空格?
-
假设您的路径名以
/字符开头并且不包含空格或:字符:grep -o '/[^[:space:]:]*' cachefile