sed正则表达式的说明

时间:2016-01-26 19:19:35

标签: regex bash sed

我正在为大学做一项与在Bash中编写脚本有关的任务。

我的部分工作包括使用tar存档特定文件夹中的某些文件。我还需要生成的tarball不包含文件夹结构。只是存档的文件。

经过一些谷歌搜索,我终于发现了一些对我有用的东西。

tar xvf some.tar --transform 's?.*/??g'

这很好地完成了这项工作。但我无法弄清楚sed表达式's?.*/??g'在代码中的作用。我试过搜索但找不到任何有用的东西。

有人可以解释一下正则表达式的作用吗?我真的很想了解它。

1 个答案:

答案 0 :(得分:3)

这个正则表达式看起来更加复杂,因为它们使用?作为分隔符。一个相当奇怪的选择。如果您使用更熟悉的分隔符,例如|,它看起来会更好's|.*/||g'

s - 进行搜索并替换

g - 全局(替换找到的所有实例)

.*/ - 匹配任意字符集后跟斜杠

|| - 空(替换为空)

看起来它正在从输出名称中删除文件路径。