我有很多类似的Urls。
<random_tex>/original/Widget-Examples-FAQ3dad.png?1437083013
<random_tex>/original/Optimizec9cd.png?1413334050
我想在.png
之前删除4个字符,输出应该类似于
<random_tex>/original/Widget-Examples-FAQ.png?1437083013
<random_tex>/original/Optimize.png?1413334050
我尝试使用sed
进行替换,但在.png
之前无法找到4个字符的模式
sed
我试过的是:sed 's/\(.{0,3}\.\)png/\1png/'
答案 0 :(得分:1)
你可以这样做,POSIX-ly:
sed 's/.\{4\}\(\.png\)/\1/'
.\{4\}
匹配.png
之前的4个字符,在替换中使用.png
请注意,对于多个.png
模式,第一个模式将被修改。
示例:强>
$ sed 's/.\{4\}\(\.png\)/\1/' <<<'/original/Widget-Examples-FAQ3dad.png?1437083013'
/original/Widget-Examples-FAQ.png?1437083013
$ sed 's/.\{4\}\(\.png\)/\1/' <<<'/original/Optimizec9cd.png?1413334050'
/original/Optimize.png?1413334050
答案 1 :(得分:-1)
if&#34; file&#34;包含您的所有网址,每行一个...
您只能使用bash shell参数扩展:
cat file | while read -r line
do
echo ${line/????.png/.png}
done
或gawk / awk解决方案:
gawk '{ sub(/.{4}.png/,".png",$0); print $0 }' file