如何通过特殊字符拆分变量

时间:2011-06-08 20:04:46

标签: awk

我有存储当前分辨率的值,例如: $ 2 = 1920x1080 。我想根据x字符拆分值,并将结果存储在2个变量中。通过上面的例子,第一个变量将存储1920和第二个1080.然后,我想根据这两个值来定义打印命令。

这样做的最佳方式是什么?

4 个答案:

答案 0 :(得分:16)

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

如果我理解你的需要。

我希望这会有所帮助。

答案 1 :(得分:16)

取决于我是否正确解释您的需要......

解释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

答案 2 :(得分:3)

使用shell参数扩展:

#!/bin/sh

res=1920x1080

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

echo $res_x
echo $res_y

答案 3 :(得分:1)

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