首页 > 解决方案 > 使用正则表达式从字符串文件中提取路径(Linux)

问题描述

我有一个缓存文件,其中包含 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):

^(.*/)?(?:$|(.+?)(?:(\.[^.]*$)|$))

'(\/.+?) '

你知道我该怎么做吗?我尝试了几件事,但没有任何效果。非常感谢

标签: regexbashpath

解决方案


和:

sed -n 's/^[[:space:]]*\(.\+\)[: ]/\1/p' cachefile.txt

sed -n: 无打印模式下的 Sed 编辑器

  • s/: 搜索正则表达式:
  • ^[[:space:]]*: 以空格或无空格开头的搜索行
  • \(.\+\):捕获 1 个或多个字符。
  • [: ]: 后跟冒号:或空格
  • /\1/p:打印正则表达式捕获的组 1。

在 regex101.com 中测试和使用这个正则表达式:

https://regex101.com/r/lFzvYq/2


推荐阅读