sed를 사용하여 텍스트를 추출하는 방법

sed를 사용하여 텍스트를 추출하는 방법

텍스트 파일이 있는데 sed.

예를 들어 다음 줄에서는 다음과 같습니다.

string>![TEST[Extract this string]>/string>

난 갖길 원해

Extract this string 

이것을 어떻게 달성할 것인가 sed? 기본적으로 string>![TEST[" "라는 표현으로 시작하고 ]>/string>" "라는 표현으로 끝나는 텍스트를 얻고 싶습니다 .

답변1

sed -e 's/string>!\[TEST\[\(.*\)]>\/string>/\1/' file

또는

sed -e 's|string>!\[TEST\[\(.*\)]>/string>|\1|' file

산출:

이 문자열을 추출하세요

답변2

문자열에 무엇을 일치시켜야 하는지 알려줄 뿐만 아니라 문자열에 무엇을 보관해야 하는지도 알려 주어야 합니다.

sed -ne 's@string>!\[TEST\[\([^]]*\)\]>/string>@\1@gp'

sin 명령은 sed정규식과 대체 문자열이라는 두 가지 매개변수를 사용합니다. 일반적으로 /구분 기호는 둘을 구분하는 데 사용되지만 이 경우에는 어떤 문자든 사용할 수 있습니다 @. 정규식에는 , 와 같은 특수 문자가 있습니다 [. 실제 문자를 원할 경우 를 사용하여 이러한 문자를 인용해야 합니다(예: ) . 대괄호 사이의 모든 내용을 캡처합니다 . 그리고 문자열을 정규식과 일치하는 문자열로 바꿉니다. 마지막으로 , send는 행( )에서 여러 일치 항목을 수행하고 대체된 행을 인쇄하도록 지시합니다 ( 옵션을 사용하여 행을 인쇄하지 않도록 지시한 후 ).]\string>!\[\([^]]*\)\1@gpgsed-n

답변3

Awk를 사용하는 간단한 방법:

awk -F'[][]' '{print $3}' file

답변4

GNU를 통해 grep,

$ echo 'string>![TEST[Extract this string]>/string> foo bar string>![TEST[Extract this string]>/string>' | grep -oP 'string>!\[TEST\[\K.*?(?=]>/string>)'
Extract this string
Extract this string

관련 정보