首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash/sed -在变量中使用sed

Bash/sed -在变量中使用sed
EN

Stack Overflow用户
提问于 2021-02-21 19:45:55
回答 1查看 39关注 0票数 0

我想使用sed来删除和替换bash脚本中的一些字符。

代码语言:javascript
复制
#!/bin/bash
DIR="."
file_extension=".mkv|.avi|.mp4"
files= `find $DIR -maxdepth 1 -type f -regex ".*\.\(mkv\|avi\|mp4\)" -printf "%f\n"`

为了简化$files,我想在其中使用$file_extension,即将.mkv|.avi|.mp4更改为mkv|avi|mp4

我如何使用sed来做到这一点呢?或者是一种更简单的选择?

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 20:00:23

不需要sedbash内置了基本的替换运算符。全部替换操作的基本语法是${variable//pattern/replacement},但不幸的是它不能嵌套,所以您需要一个帮助变量。为了清楚起见,我甚至使用了两个:

代码语言:javascript
复制
file_extension_without_dot="${file_extension//./}"           # mkv|avi|mp4
file_extension_regex="${file_extension_without_dot//|/\\|}"  # mkv\|avi\|mp4
files= `find $DIR -maxdepth 1 -type f -regex ".*\.\($file_extension_regex\)" -printf "%f\n"`

如果你的find支持它,你也可以考虑使用不同的-regextype (参见find -regextype help),这样你就不再需要这么多的反斜杠了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66301963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档