我有一个bash变量,一些文件路径(带空格)和文件名,例如:
$ echo $tmp
/home/xyz/some/path/with spaces/AlbumArt_{random-number-sequence}_Large.jpg
当我尝试用grep识别文件名部分时,例如:
$ echo "$tmp" | egrep 'AlbumArt.*Large.jpe?g$'
/home/xyz/some/path/with spaces/**AlbumArt_{random-number-sequence}_Large.jpg**
文件名部分似乎被正确识别,但当我尝试将其转换为sed替换表达式时,例如:
$ echo "$tmp" | sed 's@AlbumArt.*Large.jpe?g$@NewString@'
/home/xyz/some/path/with spaces/AlbumArt_{random-number-sequence}_Large.jpg
预期的替代不会发生。提前感谢您的帮助。
答案 0 :(得分:0)
实际上 egrep 是 grep -E 的变体,允许“激活”扩展的正则表达式(您可以看到:https://en.wikipedia.org/wiki/Regular_expression#Standards)。
因此,您只需要对sed使用相同的选项:
echo "$tmp" | sed -E 's@AlbumArt.*Large.jpe?g$@NewString@'