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, btw를 사용할 때는 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
다음을 수행할 수 있습니다.오직고정 길이 LookBehind를 사용합니다. 예를 들어 echo '012abcde' | grep -oP '(?<=\d{3})\w+'
출력 abcde
하지만 echo '012abcde' | grep -oP '(?<=\d+)\w+'
오류를 출력합니다 grep: lookbehind assertion is not fixed length
. 따라서그렙템플릿피긍정적인엘ookbehind는 또는 가 (?<=fixed_length_pattern)pattern
아닙니다 .(?<=pattern)pattern
(?<=text)pattern
(2)에 따르면@G-Man은 '모니카를 복원하라'고 말합니다.아래 주석 섹션에서 옵션은 다음 -o
과 Grep
같습니다.아니다POSIX 호환. 이는 오래된 장치가 많지 않을 수도 있음을 의미합니다. 하지만 개인적인 경험으로 볼 때 지난 4년 동안 업데이트된 장치는 제대로 작동할 것입니다. 다른 장치도 작동할 수 있습니다. 테스트할 장치가 많지 않기 때문에 더 구체적으로 설명할 수 없습니다.
(3) 다시 다음과 같이G-맨-P
, Perl 호환 정규 표현식(PCRE)을 활성화하는 매개 변수를 전달하면 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번째가 아닌 3번째 필드에 있습니다.
답변4
xrandr | grep '*' | awk '{print $1}'
이것은 나에게 가장 간단한 해결책처럼 보였습니다. 저는 두 개의 모니터를 가지고 있고 둘 다에 대한 출력을 얻습니다.