如何使用 REGEX 删除斜杠

如何使用 REGEX 删除斜杠

你好,我正在尝试删除/.我遇到的问题如下所示,找到.sh当前文件夹中具有扩展名的所有文件,然后删除./名称之前和.sh名称之后的文件,这必须位于具有.sh我命名的扩展名的文件中find_sh.sh。我已经尝试过,find . -name '*.sh' -print | sed 's/[.]//g' | sed 's/[/]//g' | sed 's/.sh//g' 但这也会删除_.我做错了什么?

答案1

我已经这样做了,它有效find . -name '*.sh' -print | sed 's/[.]//g' | sed 's/[/]//g' | sed 's/sh//'并且有效。

答案2

在您的模式中.匹配任何字符,而不仅仅是文字点。您需要使用反斜杠对其进行转义以防止这种情况发生。你的其他解决方案另一方面,删除文件名中的所有点,即a.b.sh变为ab.我提出以下替代方案:

find . -name '*.sh' | sed 's,^./,,g' | sed 's/.sh$//'

请注意^哪个与行的开头匹配,$哪个与行尾匹配。

但最好只使用一个sed命令:

find . -name '*.sh' | sed 's,^./\(.*\).sh$,\1,'

相关内容