이런 파일이 있어요
text
another line
<script src="https://link/user/id/text.js></script>
text
<script src
URL과 stage로 시작하는 줄을 찾고 싶습니다. 사용자와 ID만 추출하면 전체 행이 다음 형식으로 대체됩니다.
[[ Link is here - user || id ]]
전체 행을 바꾸는 방법을 알고 있지만 저에게 어려운 부분은 해당 조회 행에서 사용자와 ID를 추출하기 위해 이를 표현하는 방법입니다.
답변1
사용sed
$ sed -E '/^<script src/s~.*/([^/]*)/([^/]*)/[[:alnum:]]+\.js.*~[[ Link is here - \1 || \2 ]]~' input_file
text
another line
[[ Link is here - user || id ]]
text
/^<script src/
- 다음으로 시작하는 행과 일치합니다.<script src
s~
- 기본 구분자와 충돌하지 않도록 교체된 구분자를 변경합니다.
.*/([^/]*)/([^/]*)/[[:alnum:]]+\.js.*
- 마지막에서 세 번째 슬래시 앞의 모든 항목을 일치시킵니다. 다음 슬래시까지 괄호 안에 그룹 1을 캡처하고 [^/]*
그룹 2 캡처를 반복하며 그 뒤에 하나 이상의 영숫자 문자, 마침표 .
및 가 옵니다 js
. 괄호 안에 포함되지 않은 다른 모든 항목을 제외합니다.
[[ Link is here - \1 || \2 ]]~
\1
- 역참조가 포함된 캡처링 그룹을 반환합니다.\2