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

Unix 将值与第1列和第2列进行比较打印对应的第3列,unix,awk,numbers,Unix,Awk,Numbers,我有这样的文件 01 10 a 11 20 b 21 30 c 31 40 d 41 50 e 我想输入一个数字,并与第一列和第二列进行比较,然后打印相应的第三列 例如,如果我输入23,它应该显示c,如果我输入45,它应该显示eegrep“^${DIGIT_1}[0-9]${DIGIT_2}[0-9]”文件| awk'{print$3} 在您的示例中,digital_1是2而digital_2是3egrep“^${digital_1}[0-9]${digital_2}[0-9]”文件| awk

我有这样的文件

01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
我想输入一个数字,并与第一列和第二列进行比较,然后打印相应的第三列

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

egrep“^${DIGIT_1}[0-9]${DIGIT_2}[0-9]”文件| awk'{print$3}

在您的示例中,
digital_1
2
digital_2
3
egrep“^${digital_1}[0-9]${digital_2}[0-9]”文件| awk'{print$3}


在您的示例中,
digital_1
2
digital_2
3
,Simple
awk
方法

cat file
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
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>



awk'inpSimple
awk
approach

cat file
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
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>



awk'inp另一种awk方法

cat file
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
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>
awk-vd='{dt=int(d/10);du=d-dt*10;c1=int($1/10);c2=int($2/10);if(dt==c1&&du==c2)打印$3}'

另一种awk方法

cat file
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
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>
awk-vd='{dt=int(d/10);du=d-dt*10;c1=int($1/10);c2=int($2/10);if(dt==c1&&du==c2)打印$3}'

使用这个简单的脚本

#!/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"
#/垃圾箱/垃圾箱
echo“输入号码”
读取数值
读行时
做
设置--$line
如果[$num-ge$1]&&[$num-le$2];然后
回声3美元
出口1
fi
完成<文件名
回显“未找到”

使用这个简单的脚本

#!/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"
#/垃圾箱/垃圾箱
echo“输入号码”
读取数值
读行时
做
设置--$line
如果[$num-ge$1]&&[$num-le$2];然后
回声3美元
出口1
fi
完成<文件名
回显“未找到”
在一个简单的脚本中:



您可以获取
awk
来确定数字的第一位和第二位,如下所示:

% awk -vnumber=45 '
BEGIN { first = int(number / 10); second = number % 10 }                           
$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

我假设第一列中的单位数字不一定总是0;同样,对于第2i列,我假设第一列中的单位数字不一定总是0;类似地,对于第2列,“abcde”也在输入文件中。“abcde”也在输入文件中。如果输入“1”与“01”会怎么样?您在寻找字符串、RE或数字比较吗?您是否比较了“等于”或“大于”或“介于”或其他内容?如果您输入“1”与“01”会怎么样?您在寻找字符串、RE或数字比较吗?你的比较是平等的还是更大的,或者是介于两者之间的还是其他什么?