比较值。我有这样与第一和第二列打印对应的第三列
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
文件我想输入一个号码,与第1和第2列的比较,并打印相应的第3列
对于例如,如果我输入23它应该显示C,如果我输入45应该显示e
比较值。我有这样与第一和第二列打印对应的第三列
01 10 a
11 20 b
21 30 c
31 40 d
41 50 e
文件我想输入一个号码,与第1和第2列的比较,并打印相应的第3列
对于例如,如果我输入23它应该显示C,如果我输入45应该显示e
egrep "^${DIGIT_1}[0-9] ${DIGIT_2}[0-9]" file | awk '{print $3}'
DIGIT_1
是2
和DIGIT_2
是3
在你的榜样
简单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
“a b c d e”也在输入文件中。 – EverythingRightPlace
修正错误的做法。 – Jotne
另一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>
我认为第一列的单位数不一定总是0;类似于第2列 – WYSIWYG
使用这个简单的脚本
#!/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"
在一个简单的脚本awk:
% 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
如果你输入“1”与“01”?你在寻找一个字符串还是RE或数字比较?您是否比较平等或更高 - 那么或之间或其他什么? –