将值与第1列和第2列打印对应的第3列进行比较

时间:2013-10-26 05:58:01

标签: unix awk numbers

我有这样的文件

01 10 a
11 20 b
21 30 c
31 40 d
41 50 e

我想输入一个数字并与第1和第2列进行比较并打印相应的第3列

例如,如果我输入23,它应该显示c,如果我输入45,它应该显示e

5 个答案:

答案 0 :(得分:2)

egrep "^${DIGIT_1}[0-9] ${DIGIT_2}[0-9]" file | awk '{print $3}'

您的示例中

DIGIT_12DIGIT_23

答案 1 :(得分:2)

使用这个简单的脚本

#!/bin/sh
echo "Enter the number"
read num
while read line
do
set -- $line

    if [ $num -ge $1 ] && [ $num -le $2 ] ;then
            echo $3
            exit 1
    fi
done < filename
echo "not found"

答案 2 :(得分:0)

简单awk方法

cat file
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e


i=40


awk 'inp<=$2 {f=$3;exit} END {print $3}' inp=$i file
d

答案 3 :(得分:0)

另一个 awk 方法

awk -v d=<yournumber> '{dt=int(d/10);du=d-dt*10;c1=int($1/10);c2=int($2/10);if(dt==c1&&du==c2)print $3}' <yourfile>

答案 4 :(得分:0)

在一个简单的脚本中:

% awk -vfirst=2 -vsecond=3 '
$1 ~ first && $2 ~ second { print $3 }
' file-like-this
c

% awk -vfirst=4 -vsecond=5 '
$1 ~ first && $2 ~ second { print $3 }
' file-like-this
e

您可以awk确定数字的第一个和第二个数字,如下所示:

% awk -vnumber=45 '
BEGIN { first = int(number / 10); second = number % 10 }                           
$1 ~ first && $2 ~ second { print $3 }
' file-like-this
e