xrandr | grep primary
반품
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
나만 옳아하위 문자열 구문 분석 1920x1080
이것에서 출력됩니다.
어떻게 추출하나요?
답변1
$ echo 'eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm' |
awk -F'[ +]' '{print $4}'
1920x1080
awk를 사용할 때 grep이 필요하지 않습니다. 그런데 이것이 필요한 전부입니다:
xrandr | awk -F'[ +]' '/primary/{print $4}'
답변2
이것을 실행하면 됩니다.
xrandr | grep -oP '(?<=primary )[x\d]+'
이 출력1920x1080
그러면 이것이 어떻게 작동하나요?
(?<=pattern)pattern
1 Positive Lookbehind: text
패턴 앞에 나타나는지 확인합니다.
[ ]
문자 집합. 문자 목록을 그룹화하는 데 사용됩니다.
\d
숫자. 표현 범위0-9
[x\d]
그룹 \d
과 x
함께. 숫자와 x의 목록을 나타냅니다. 기본적으로 이런 뜻이에요x0123456789
+
이전 그룹 중 하나 이상과 일치합니다.
따라서 (?<=primary )[x\d]+
기본적으로 문자 목록과 일치하는 것을 의미합니다 x0123456789
(예를 들어1920x1080)이 텍스트 뒤에 나타납니다 'primary '
. ' '
그 뒤에 공백 문자가 있다는 점에 유의하십시오 primary
. 귀하의 경우에만 그러한 일치가 될 것입니다1920x1080
이 정규식을 테스트할 수 있습니다.여기.
편집하다:중요한 메모.
(1) 합격하면 Grep
할 수 있습니다오직고정 길이의 뒤돌아보기를 사용하세요. 예를 들어 echo '012abcde' | grep -oP '(?<=\d{3})\w+'
출력은 되지만 abcde
출력 echo '012abcde' | grep -oP '(?<=\d+)\w+'
이 잘못되었습니다 grep: lookbehind assertion is not fixed length
. 따라서grep주형인긍정적인엘ookbehind 는 또는 가 (?<=fixed_length_pattern)pattern
아닙니다 .(?<=pattern)pattern
(?<=text)pattern
(2) 기준@G-Man이 "모니카 복원"이라고 말합니다.아래 댓글 섹션의 -o
옵션은 Grep
다음과 같습니다.아니요POSIX 표준을 준수합니다. 이는 사용 가능한 오래된 장비가 많지 않을 수 있음을 의미합니다. 하지만 제 개인적인 경험에 따르면 최근 4년 이내에 업데이트된 기기는 정상적으로 작동할 것입니다. 다른 장치도 작동할 수 있습니다. 테스트할 장치가 많지 않기 때문에 더 구체적으로 설명할 수 없습니다.
(3) 다시 바탕으로G-맨-P
는 PCRE(Perl-Compatible Regular Expression) 지원 매개변수를 전달할 때 Lookbehind Assertion을 지원합니다. 이번에도 많은 구형 장치가 이를 지원하지 않을 수 있습니다. 하지만 내 경험에 따르면 최신 장치에서는 훌륭하게 작동합니다.
답변3
이 특별한 경우에는 두 번 사용할 수 있습니다 cut
.
$ echo 'eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm' | cut -d ' ' -f4 | cut -d+ -f1
1920x1080
이와 같이 구문 분석된 xrandr
출력은 매우 취약합니다. 예를 들어 내 시스템에서는 xrandr | grep primary
아무것도 반환되지 않으며 해상도는 네 번째 필드가 아닌 세 번째 필드에 있습니다.
답변4
xrandr | grep '*' | awk '{print $1}'
이것은 나에게 가장 간단한 해결책인 것 같습니다. 저는 두 개의 모니터를 가지고 있고 두 모니터 모두에서 출력을 얻습니다.