LINUX.ORG.RU

Проблема с bash script-м (выделить и изменить содержимое в строке в файле)

 


0

1

Здравствуйте! Хотел бы обратиться с просьбой по-поводу bash script. Логика, которую нужно имплементировать в нем очень проста - нужно в файле просмотреть все строки и заменить одну часть строки на другую. Т.е. пытаюсь находить подстроку которая содержится в строке между http://|https:// и /SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs?wsdl и заменить ее на другую (test-container:$WMPort) Пытаюсь использовать sed. Скрипт такого вида:

#!/bin/bash

WMPort="6708"
CONFIG_FILE="application.conf"

sed -i -e "s/\(?<=\(http:\/\/|https:\/\/\)\).*\(?=\/SmcDataServices\/IsgSharedServicesSmcGateway\/IsgSharedServicesSmcGateawayWs\[?\]wsdl\)/test-container:\$WMPort/g" $CONFIG_FILE

Содержимое application.conf:

https://Smc${env.HOSTNAME}:8090/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs?wsdl

Вроде бы должно работать, но не работает :( Спасибо.



Последнее исправление: xaizek (всего исправлений: 5)

‘s/\(http:\/\/|https:\/\/\).*\(\/SmcDataServices\/IsgSharedServicesSmcGateway\/IsgSharedServicesSmcGateawayWs[?]wsdl\)/\1test-container:$WMPort\2/g’

возможно что-то еще надо заэкранировать

nerve ★★
()
Ответ на: комментарий от nerve

Спасибо.

sed -i -e «s/(http:\/\/|https://).*(/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs[?]wsdl)/\1test-container:$WMPort\2/g» $CONFIG_FILE

Отработало без ошибок, но не изменило ничего :(

lvn2000
() автор топика
Последнее исправление: lvn2000 (всего исправлений: 1)
Ответ на: комментарий от lvn2000
$ echo 'https://Smc${env.HOSTNAME}:8090/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs?wsdl' | sed -E 's!(https?://).*(/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs\?wsdl)!\1test-container:'"$WMPort"'\2!g'
https://test-container:/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs?wsdl
xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Так работает, и в консоли все что надо меняет. Спасибо огромное! :) А как это в файле из скрипта поменять поменять?

Попробовал: sed -E ‘s!(https?://).*(/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs?wsdl)!\1test-container:’«$WMPort»‘\2!g’ $CONFIG_FILE

не поменяло ничего в $CONFIG_FILE

lvn2000
() автор топика
Ответ на: комментарий от lvn2000

Надо -i добавить:

sed -i -E 's!(https?://).*(/SmcDataServices/IsgSharedServicesSmcGateway/IsgSharedServicesSmcGateawayWs\?wsdl)!\1test-container:'"$WMPort"'\2!g' "$CONFIG"
xaizek ★★★★★
()
Ответ на: комментарий от anonymous

Спасибо еще раз! Все работает. Ура! :)

Magic

lvn2000
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.