我在一个文件中有很多路径,我需要更改具有特定字符串的路径,如果有.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会成为这项工作的好工具?
答案 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