awk / sed 줄을 찾아 문구로 바꿉니다.

awk / sed 줄을 찾아 문구로 바꿉니다.

이런 파일이 있어요

text
another line
<script src="https://link/user/id/text.js></script>
text

<script srcURL과 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

관련 정보