Linuxのシェルスクリプトで、文字列を検索するフィールドを指定する


やり方がわかりません。

番号｜名前｜身長｜体重  
を記録したテーブルがあります。

ここから、身長170センチ以上180センチ以下の人を抽出したいのですが、

[code]

    grep $a ファイル名
    
[/code]

$aに170や180の身長を入れてwhileで回して検索していたのですが  
このやり方では体重とかぶって正確な値が出ない場合があります。  
（体重１７０キロの人が抽出されました）  
そこで列指定で、検索したいのですがやり方が思いつきません。

いい方法があればご教授ください。



[code]

    awk -F \| '$3 >= 170 && $3 <=  180 {print $0}' data.txt
    
[/code]

ですかね。

`-F \|`区切り文字の指定。`|`だとパイプとして認識されるので`\`でエスケープします。

各行に対して、  
`$3 >= 170 && $3 <= 180` `|`で区切った3番目のフィールドが170以上180以下の時に･･･  
`{print $0}` `$0`(行全体)を表示

と言う動作になります。

