Bash - 数値が行で定義された範囲内にある場合、行の一致

Bash - 数値が行で定義された範囲内にある場合、行の一致

次の形式のテキストファイルがあります。

Item A,10-20
Item B,21-30
Item C,31-60
Item D,61-120

数字を含むファイルを検索し、2番目のフィールドの範囲に指定された数字を含む行を返すにはどうすればよいですか?

だから私が検索すると仮定しましょう。私が検索すると、私は33等を取得します...Item C
100Item D

(私の質問はフィールドの分離に焦点を当てず、範囲内の一致する行に焦点を当てているため、行全体を表示することは問題ありません。)

ベストアンサー1

短い awk:

$ awk -F'[,-]' -v s=11 's>=$2 && s<=$3' file1
Item A,10-20

$ awk -F'[,-]' -v s=100 's>=$2 && s<=$3' file1
Item D,61-120

$ awk -F'[,-]' -v s=61 's>=$2 && s<=$3' file1
Item D,61-120

コメントで述べたように、ラベルだけを印刷するには、{print $1}最後に以下を追加します。

$ awk -F'[,-]' -v s=61 's>=$2 && s<=$3{print $1}' file1
Item D

おすすめ記事