많은 정보가 포함된 txt 파일을 생성하는 스크립트가 있습니다. 특정 텍스트가 있는지 확인한 다음 그 뒤에 있는 내용을 복사하고 싶습니다. 예를 들어, 다음은 txt 파일입니다.
blablablaWANTEDTEXT[TEXTTOCOPY]blablabla...
존재 하는지 확인 WANTEDTEXT
하고, 존재한다면 다음 내용을 복사합니다 [
.]
TEXTTOCOPY
감사해요
답변1
> echo blablablaWANTEDTEXT[TEXTTOCOPY]blablabla... |
> awk -v searchtext=WANTEDTEXT '$0 ~ searchtext "\\[.*\\]" {
strstart=index($0,searchtext "[")+length(searchtext)+1;
tmpstr=substr($0,strstart); sub("].*$","",tmpstr); print tmpstr; } '
TEXTTOCOPY
답변2
echo '....' | grep -oP 'WANTEDTEXT\[\K[^]]*'
grep
이 모드에서 작동한다는 것은 Perl
Perl 정규 표현식을 작성할 수 grep
있고 -o
평소처럼 전체 줄 대신 일치하는 부분만 인쇄된다는 것을 의미합니다.
참고: 왼쪽의 항목은 \K
출력에 표시되지 않습니다. grep
일치하지만 출력하지 않을 때 사용됨 을 나타내는 Guardian 플래그(뒤를 보지만 가변 길이임)입니다 .
결과:
TEXTTOCOPY
답변3
#!/bin/bash
greptext=$(echo blablablaWANTEDTEXT[TEXTTOCOPY]blablabla | grep "WANTEDTEXT")
if [[ -n $greptext ]]; then
ftext=$(echo "blablablaWANTEDTEXT[TEXTTOCOPY]blablabla" | cut -d'[' -f2 | cut -d']' -f1)
echo $ftext
fi