패턴과 일치하는 행의 일부를 반환합니다.

패턴과 일치하는 행의 일부를 반환합니다.

줄 시작 부분에 "Result:"라는 문자열이 한 번만 포함된 파일(file_name)이 있습니다. "."이 나타날 때까지 해당 줄에서 "Result:" 문자열 뒤에 오는 모든 문자를 인쇄하고 싶습니다. 특징. 어떤 쉘 명령을 사용해야 합니까?

답변1

Perl 정규식을 실행하는 최신 버전의 GNU grep은 다음을 수행합니다.

grep -P -o '^Result: \K[^.]*'

-o줄의 일치하는 부분만 인쇄하도록 grep에 지시합니다. 정규식의 -Pwith는 \K너비가 0인 LookBehind 어설션이므로 이전 콘텐츠가 \K일치 항목(너비 0)의 일부가 되지 않게 됩니다.

또한보십시오:grep은 지정된 그룹과 일치하는 출력만 출력할 수 있습니까?

답변2

당신은 그것을 사용할 수 있습니다 sed. 이와 같이:

sed -e 's/Result:\(.*\)\..*$/\1/g' file_name

동일한 파일에 결과를 저장하려면 매개변수 -i에 추가할 수 있습니다.sed

답변3

<file_name sed -n 's/^Result: \([^.]*\)\..*/\1/p'
<file_name awk '/^Result:.*\./ {sub(/^Result: /,""); sub(/\..*/, ""); print}'
<file_name grep '^Result: .*\.' | sed 's/^Result: //' | sed 's/\..*//'

.a의 존재가 필요하지 않은 경우 다음으로 변경하십시오.

<file_name sed -n -e 's/\..*//' -e 's/^Result: //p'
<file_name awk '/^Result: / {sub(/^Result: /,""); print}'
<file_name grep '^Result: ' | sed 's/^Result: //'

바라보다이 답변sed 솔루션에 대한 배경 지식을 얻으십시오.

관련 정보