파일에서 문자열을 grep하고 문자열 옆에 숫자를 출력하는 방법

파일에서 문자열을 grep하고 문자열 옆에 숫자를 출력하는 방법

(셸 스크립트를 사용하여) 찾고 있는 문자열 옆에 숫자를 인쇄하려고 합니다.

예를 들어 내 파일에는 다음 줄이 포함되어 있습니다.

arg[30] = -Xmx4096m

문자열을 사용하여 파일을 검색 중이며 Xmx문자열에 추가된 다음 숫자의 출력이 필요하고 출력에는 아무것도 필요하지 않습니다. 이 목표를 어떻게 달성할 수 있나요?

답변1

sed -n 's/.*Xmx\([0-9]\+\).*/\1/p' filename

설명하다:

  • sed -n그렇게 하라는 지시를 받은 경우에만 sed 인쇄 출력을 수행합니다(by p).
  • s/<p1>/<p2>/p검색하여 .then <p1>으로 바꾼 다음 <p2>해당 줄을 인쇄하세요.
  • .*Xmx\([0-9]\+\).*문자열 뒤에 숫자가 옵니다 Xmx. 숫자는 "캡처"됩니다.
  • \1첫 번째로 캡처된 그룹입니다.

Xmx인간의 용어로: 숫자 뒤에 숫자가 포함된 줄을 검색합니다 . 숫자를 적어보세요. 모든 것을 버리고 숫자만 유지하세요. 숫자를 인쇄하세요.

답변2

귀하의 버전이 PCRE 모드를 지원하는 경우 grep다음을 사용할 수 있습니다.grep -Po 'Xmx\K\d+'

전임자.

echo 'F arg[30] = -Xmx4096m' | grep -Po 'Xmx\K\d+'
4096

관련 정보