Awk 如果需要,请用一个字符串替换完整路径
我在一个文件中有很多路径,如果有.jpg、.pdf,我需要使用特定字符串更改路径 例如: 我现在有这样的台词:Awk 如果需要,请用一个字符串替换完整路径,awk,sed,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的/im
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的/images[^0-9]*[^0-9]/\/images/;'代码>-无结果
或者也许awk将是这项工作的好工具?使用gnu sed:sed-r'/\(jpg | pdf)$/s#/[0-9]+/#/#'
$ 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
/\(jpg | pdf)$/
:匹配以.jpg
或.pdf
结尾的行
/[0-9]+/
:匹配斜杠之间的任意数字序列
例如:
$ echo "images/2015/image12345.jpg" | sed -r '/\.(jpg|pdf)$/s#/[0-9]+/#/#'
images/image12345.jpg
当中间的组件内容都是数字时,为什么要在非数字上进行匹配?我只是尝试了一些方法来让它工作。我不擅长sed-对不起,你想匹配并删除/#####
,所以匹配它。Ed Morton,我现在就知道了-谢谢!现在,我必须调整它,使其根据需要工作。