0

私はこのようなファイルを持っています

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

数字を入力して1列目と2列目を比較し、対応する3列目を印刷したい

たとえば、23 を入力すると c が表示され、45 を入力すると e が表示されます。

4

5 に答える 5

2

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

DIGIT_1あなたの例ではあり2ますDIGIT_23

于 2013-10-26T06:12:31.203 に答える
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"
于 2013-10-26T07:55:32.860 に答える
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次のように、数値の 1 桁目と 2 桁目を判別できます。

% awk -vnumber=45 '
BEGIN { first = int(number / 10); second = number % 10 }                           
$1 ~ first && $2 ~ second { print $3 }
' file-like-this
e
于 2013-10-26T08:53:56.707 に答える
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
于 2013-10-26T07:13:59.800 に答える
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>
于 2013-10-26T07:23:22.640 に答える