поиск и замена в файлах на Linux (регулярное выражение) - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть около 50 html-файлов, и мне нужно найти и заменить URL-адрес Resizer Resizer во всех них

Текущий 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:
удалить: & mode = resizeByMinSize, cropToSize & cropPosition = topleft

3:
найти: & width =
заменить на: & w =

4:
найти: & height =
заменить на: & h =

5:
добавить это в конец URL-адреса изображения: & far = C & q = 85 & zc = C

edit:
для этого примера URL должен быть вывод:
/resizer/phpThumb.php? src = / uploads / images / 5x6a6s9d7a9s7d8a9.jpg & w = 64 & h = 64 & far = C & q = 85 & zc = C

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Я предполагаю, что в вашем примере URL отсутствует фрагмент в середине. Я думаю, что следующий скрипт 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 голос
/ 16 декабря 2011

Возможно, в вашем URL выше есть опечатка, в пункте 2 вы говорите, чтобы удалить &mode=resizeByMinSize,cropToSize&cropPosition=topleft, но вы забыли упомянуть, что делать с esizeByMinSize,cropToSize&cropPosition=topleft ...

В любом случае, скрипт awk нижерешает проблему: настройте ее в соответствии с вашими потребностями:

# 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 и ваша проблема решена.1011 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...