2011-12-16 74 views
0

我有大约50 HTML文件和需要搜索和替换图像缩放网址,在所有这些搜索和文件替换在Linux(正则表达式)

当前的URL是这样的: http://www.test1.com/showimage.php?fileUrl=/uploads/images/5x6a6s9d7a9s7d8a9.jpg&mode=resizeByMinSize,cropToSize&cropPosition=topleft&width=64&height=64esizeByMinSize,cropToSize&cropPosition=topleft&width=64&height=64

我要的是:

1:
发现:http://www.test1.com/showimage.php?fileUrl=
替换:/resizer/phpThumb.php?src=

2:
删除:&模式= resizeByMinSize,cropToSize & cropPosition =左上

3:
发现:&宽度=
替换:& W =

4:
发现:&高度=
替换为:& h =

5:
将其添加到图像URL的末尾:&远= C & Q = 85 & ZC = C

编辑:
输出对于此示例的URL应该是:
/resizer/phpThumb.php ?SRC = /上传/图像/ 5x6a6s9d7a9s7d8a9.jpg & W = 64 & H = 64 &远= C & q = 85 & ZC = C

由于

+0

`sed`可能不是最好的工具,但sed可以做到。你有什么尝试? – 2011-12-16 16:28:51

回答

2

我打算假设您的示例网址在中间缺少一个片段。我想下面的sed脚本可能满足您的需求:

sed -e 's-http://www.test1.com/showimage.php?fileUrl=-/resizer/phpThumb.php?src=-; s/&mode=resizeByMinSize,cropToSize&cropPosition=topleft//; s/&width=/\&w=/g; s/&height=/\&h=/g; s/$/\&far=C\&q=85\&zc=C/;' /tmp/y.txt 
1

有可能是在上述网址输入错误,在第2点,你说删除&mode=resizeByMinSize,cropToSize&cropPosition=topleft但你忘记提及如何处理esizeByMinSize,cropToSize&cropPosition=topleft做...

不管怎样,下面的AWK纸条解决了这个问题:它tweek您的需求:

# replace 'www' below with a better pattern 
/www/ { 
    sub(/http:\/\/www\.test1\.com\/showimage\.php\?fileUrl=/, "/resizer/phpThumb.php?src=") 

    gsub(/&mode=resizeByMinSize,cropToSize&cropPosition=topleft/, "") 
    gsub(/&width=/, "\\&w=") 
    gsub("&height=", "\\&h=") 
    $0 = $0 "&far=C&q=85&zc=C" 
    print 
} 

报价是有点乱,看awk-manual 包装这在find sequen ce,你的问题就解决了。

相关问题