2011-12-16 39 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,你的問題就解決了。

相關問題