【发布时间】:2019-10-03 13:04:02
【问题描述】:
在正则表达式中使用捕获组之类的东西进行大括号扩展的最佳方法是什么。例如:
touch {1,2,3,4,5}myfile{1,2,3,4,5}.txt
产生数字和 25 个不同文件的所有排列。但如果我只想拥有像1myfile1.txt、2myfile2.txt、...这样的文件,第一个和第二个数字相同,这显然是行不通的。因此,我想知道最好的方法是什么?
我正在考虑捕获第一个数字,然后再次使用它。理想情况下没有琐碎的循环。
谢谢!
【问题讨论】:
-
请编辑您的 Q 以包括可测试的输入、所需的输出以及您解决问题的最佳尝试。我认为您将需要一个
for循环。祝你好运。 -
当然,我知道循环,但是无法以某种方式捕获?
-
你说的是匹配
'/^[[:digit:]]+myfile[[:digit:]]+.txt/'(扩展正则表达式)之类的东西吗?或者,您可以将printf "%s\n" {1,2,3,4,5}myfile{1,2,3,4,5}.txt写入临时文件并使用grep -f tmpfile ...进行匹配。 -
bash中有正则表达式捕获组,但没有大括号扩展。 -
谢谢@chepner。这回答了我问题的核心。
标签: bash brace-expansion