2013-10-26 118 views
0

比較值。我有這樣與第一和第二列打印對應的第三列

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

文件我想輸入一個號碼,與第1和第2列的比較,並打印相應的第3列

對於例如,如果我輸入23它應該顯示C,如果我輸入45應該顯示e

+0

如果你輸入「1」與「01」?你在尋找一個字符串還是RE或數字比較?您是否比較平等或更高 - 那麼或之間或其他什麼? –

回答

2

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

DIGIT_12DIGIT_23在你的榜樣

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 
+0

「a b c d e」也在輸入文件中。 – EverythingRightPlace

+0

修正錯誤的做法。 – Jotne

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> 
+0

我認爲第一列的單位數不一定總是0;類似於第2列 – WYSIWYG

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" 
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 
相關問題