搜索和文件替换在Linux(正则表达式)
问题描述:
我有大约50 HTML文件和需要搜索和替换图像缩放网址,在所有这些搜索和文件替换在Linux(正则表达式)
我要的是:
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
由于
答
我打算假设您的示例网址在中间缺少一个片段。我想下面的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
答
有可能是在上述网址输入错误,在第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,你的问题就解决了。
`sed`可能不是最好的工具,但sed可以做到。你有什么尝试? – 2011-12-16 16:28:51