Как разделить переменную по специальному символу - PullRequest
15 голосов
/ 09 июня 2011

У меня есть значение, в котором хранится текущее разрешение, например: $ 2 = 1920x1080 .Я хотел бы разделить значение на основе символа x и сохранить результат в 2 переменных.В приведенном выше примере первая переменная будет хранить 1920, а вторая 1080. Затем я хотел бы дать определение для команды печати на основе этих двух значений.

Каков наилучший способ сделать это?

Ответы [ 4 ]

16 голосов
/ 09 июня 2011

Зависит от того, правильно ли я понимаю ваши потребности ...

Интерпретация 1 , строка "1920x1080"

echo 1920x1080 | awk -F"x" '{print $1, $2}'
1920 1080

Интерпретация 2 , строка "$ 2 = 1920x1080"

$ echo '$2 = 1920x1080' | awk -F"x" 'sub(/\$[0-9] += +/, "", $1){print $1, $2}'
1920 1080

В обоих примерах ширина помещается в $1, а высота в $2

16 голосов
/ 09 июня 2011
awk '{
   res=$2
   split(res,resArr,"x")
   print "resX=" resArr[1] "\tresY="resArr[2]
}' inFile

Если я правильно понимаю ваши потребности.

Надеюсь, это поможет.

4 голосов
/ 09 июня 2011

Использование расширения параметра оболочки:

#!/bin/sh

res=1920x1080

res_x=${res%%x*}
res_y=${res##*x}

echo $res_x
echo $res_y
1 голос
/ 09 июня 2011
res='$2 = 1900x1080'
IFS=x
set -- $(egrep -o '[0-9]+x[0-9]+' <<< "$res")
res_x=$1
res_y=$2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...