正则表达式目录重命名

正则表达式目录重命名

我不擅长使用正则表达式,无法理解为什么这会选择 - 之后的下一个字符

/[\-][^ - ]/g

这样,它就选择了 - 和下面的字符。

我想选择两个数字之间的破折号,但不想选择前后有空格的破折号。

实际上我正尝试在 ubuntu 中使用它来递归重命名名为

#### - ##-##

#### - ##:## 

答案1

通常,人们会通过将破折号固定在其周围的数字上来转换这样的模式,例如,

foo="123 - 456-78"
bar=$(echo "$foo" | sed -r -e 's,([[:digit:]])-([[:digit:]]),\1:\2,')

也就是说,在两边匹配一个数字,然后使用后向引用将数字放回去。

实际上sed本身并不是一个好例子,因为这是(像bash)ERE(扩展正则表达式)的使用,而不是标准。但是,由于这是针对 Ubuntu 的,我们可以假设您正在使用GNU sed,它有一个-r用于指定 ERE 的选项。

相关内容