sed를 사용하여 문자열 교체

sed를 사용하여 문자열 교체

내가 작성 중인 스크립트에는 두 개의 bash 변수가 있습니다.

num1=site_2734
num2=796

문자열이 포함된 svg 파일을 읽어야 합니다.

http://xxx-xxx.xxx.com/var/site_2734/storage/issues/796/svg/img/page-002-img1.jpg?q=80

첫 번째 부분을 "None"으로 바꾸고 "?q=10"을 제거하여 다음과 같이 만들고 싶습니다.

page-002-img1.jpg

그래서 sed로 이와 같은 것을 시도했지만 작동하지 않았습니다.

sed -i -e 's/\(http:\/\/xxx-xxx.xxx.com\/var\/$num1\/storage\/issues\/$num2\/svg\/img/\).*\(\)/\1\2/'

어떤 도움이라도 대단히 감사하겠습니다.

답변1

파일 이름 자체에 슬래시나 물음표가 포함되어 있지 않다는 것을 아는 것은 매우 간단합니다.

sed --in-place 's_http.*/img/\(.*\)?q=[0-9][0-9]*_\1_' inputfile

사이트 번호와 발행 번호가 꼭 필요한 경우 명령을 결합한 sed다음 변수로 구현할 수 있습니다.

sedcmd='s_http.*'$num1'.*'$num2'.*/img/\(.*\)?q=[0-9][0-9]*_\1_'
sed --in-place "$sedcmd" inputfile

관련 정보