web-dev-qa-db-ja.com

変数を特殊文字で分割する方法

次のように、現在の解像度を格納する値があります:$ 2 = 1920x108x文字に基づいて値を分割し、結果を2つの変数に格納したいと思います。上記の例では、最初の変数は1920を格納し、2番目の変数は1080を格納します。次に、これら2つの変数に基づいてprintコマンドの定義を作成します。

これを行うための最良の方法は何ですか?

19
Shira
awk '{
   res=$2
   split(res,resArr,"x")
   print "resX=" resArr[1] "\tresY="resArr[2]
}' inFile

私があなたのニーズを正しく理解していれば。

これがお役に立てば幸いです。

16
shellter

私があなたのニーズを正しく解釈するかどうかに依存します...

解釈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
Fredrik Pihl

シェルパラメータ展開の使用:

#!/bin/sh

res=1920x1080

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

echo $res_x
echo $res_y
4
ripat
res='$2 = 1900x1080'
IFS=x
set -- $(egrep -o '[0-9]+x[0-9]+' <<< "$res")
res_x=$1
res_y=$2
1
glenn jackman