如果使用一个字符串替换完整路径

时间:2015-07-09 17:43:38

标签: awk sed

我在一个文件中有很多路径,我需要更改具有特定字符串的路径,如果有.jpg,.pdf 例如: 我现在有这样的行:

images/2015/somename.jpg
images/2012/somefile.pdf

2015/2012可能是1997年或2010年等 - 随机年份数字。 我想用sed(如果可能的话)改变这些行,就像这样

images/somename.jpg
files/somefile.pdf

我试过这样: echo "images/2015/image12345.jpg" | sed 's/images[^0-9]*[^0-9]/\/images/;' - 没有结果

或许awk会成为这项工作的好工具?

2 个答案:

答案 0 :(得分:0)

$ cat file
images/2015/somename.c
images/123/somename.jpg
1234/2015/somename.jpg
images/2015/somename.jpg
images/2012/somefile.pdf

$ awk '/\.(jpg|pdf)$/ {sub("/[0-9]{4}/","/")} 1' file
images/2015/somename.c
images/123/somename.jpg
1234/somename.jpg
images/somename.jpg
images/somefile.pdf

答案 1 :(得分:0)

使用gnu-sed:sed -r '/\.(jpg|pdf)$/s#/[0-9]+/#/#'

/\.(jpg|pdf)$/:匹配以.jpg.pdf

结尾的行

/[0-9]+/:匹配斜杠之间的任何数字序列

示例:

$ echo "images/2015/image12345.jpg" | sed -r '/\.(jpg|pdf)$/s#/[0-9]+/#/#'
images/image12345.jpg