사용 가능한 모든 해상도의 규모를 표시합니다.

사용 가능한 모든 해상도의 규모를 표시합니다.

이 스크립트를 사용하여 비율을 얻으려고합니다.

echo "$(xrandr)"|cut -f 4 -d" "|sed 's/x/00 \\\* /g'|while read i; do echo "$i = "$(expr $i); done

하지만 다음과 같은 오류가 발생합니다.

102400 * 768 = 
expr: Syntaxerror

이전에 양이나 백슬래시를 변경하려고 시도했지만 *제대로 작동하지 못했습니다.

결과를 올바르게 전달하려면 어떻게 해야 합니까 expr?

원하는 출력:

3200x1800 1.77
2048x1536 1.33
1920x1440 1.33
1856x1392 1.33
1792x1344 1.60
...

답변1

아니요 echo, 다른 쓸모없는 명령은 필요하지 않습니다. 단 하나의 명령으로 awk작업을 수행해야 합니다.

$ xrandr | awk -F'[x ]' '/^   /{print $4"x"$5" \t"$4/$5}'

1024x600    1.70667
800x600     1.33333
640x480     1.33333

답변2

그런 것?

xrandr | awk '/^ +[0-9]/ {gsub(/x/,"/"); print $1}' | bc -l

답변3

시작으로...

xrandr | awk -F ' *|x' '/^ +[0-9]/{printf("%5sx%-6s %.2f\n", $2, $3, $2 / $3)}'
 1920x1080   1.78
 1680x1050   1.60
 1600x900    1.78
 1280x1024   1.25
 1280x960    1.33
 1280x800    1.60
 ...

답변4

곱셈이 아닌 나눗셈을 해야 한다는 걸 알았더니 별표를 유발하던 오류가 사라졌습니다.

이는 및 없이 awk작동합니다 bc.

xrandr|egrep "x[[:digit:]]+ "|cut -f 4 -d" "|sed 's/x/00 \/ /g'|while read i; do echo "$i = "$(expr $i); done

내 결과(콘솔에서 Ctrl 키를 누른 채 선택):

3200 / 1800 = 1.77
2048 / 1536 = 1.33
1920 / 1440 = 1.33
1856 / 1392 = 1.33
1792 / 1344 = 1.33
1920 / 1200 = 1.60
1920 / 1080 = 1.77
1600 / 1200 = 1.33
1680 / 1050 = 1.60
1600 / 1024 = 1.56
1400 / 1050 = 1.33
1280 / 1024 = 1.25
1440 / 900 = 1.600
1280 / 960 = 1.333
1360 / 768 = 1.770
1152 / 864 = 1.333
1024 / 768 = 1.333
800 / 600 = 1.3333
640 / 480 = 1.3333

관련 정보