在我的 bash 脚本中,我有一个文件名数组,例如
files=( "site_hello.xml" "site_test.xml" "site_live.xml" )
我需要提取下划线和 .xml 扩展名之间的字符,以便在函数中循环使用它们。
如果这是 python,我可能会使用类似
re.match("site_(.*)\.xml")
然后提取第一个匹配的组。
不幸的是,这个项目需要在 bash 中,所以 -- 我怎样才能在 bash 脚本中做这种事情?我不太擅长 grep、sed 或 awk。
最佳答案
像下面这样的东西应该可以工作
files2=(${files[@]#site_}) #Strip the leading site_ from each element
files3=(${files2[@]%.xml}) #Strip the trailing .xml
编辑:纠正这两个错别字后,它似乎确实有效:)
关于regex - bash 脚本正则表达式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6903503/