(셸 스크립트를 사용하여) 찾고 있는 문자열 옆에 숫자를 인쇄하려고 합니다.
예를 들어 내 파일에는 다음 줄이 포함되어 있습니다.
arg[30] = -Xmx4096m
문자열을 사용하여 파일을 검색 중이며 Xmx
문자열에 추가된 다음 숫자의 출력이 필요하고 출력에는 아무것도 필요하지 않습니다. 이 목표를 어떻게 달성할 수 있나요?
답변1
sed -n 's/.*Xmx\([0-9]\+\).*/\1/p' filename
설명하다:
sed -n
그렇게 하라는 지시를 받은 경우에만 sed 인쇄 출력을 수행합니다(byp
).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