特定のフィールドに文字列を含む行の検索はできる?
特定の列の文字列が何かを調べる場合には、grepコマンドを使うよりも、awkコマンドを使ったほうが確実に処理できます。
awk '$フィールド番号=="文字列"{print}' ファイル名
と指定します。フィールド番号(列番号)は、左から$1、$2・・・で指定します。 また、文字列の前後は必ずダブルクォーテーション(”)で囲みます。 awkを使用すると、ファイルの中から色々な条件を指定してデータを探し、 処理(表示、計算など)を行うことができます。 詳しくは、awkのマニュアルをご覧ください。

UNIX Handy Manual:grep

grepを使って条件に合った件数と、検索結果の両方を出すことはできる?
grepのオプションだけでは、検索結果のみ、件数のみの表示しかできませんが、 パイプの機能を利用することで両方表示することができます。
grep 検索文字列 ファイル名 | tee 端末のデバイスファイル名 | wc -l

teeコマンドは、標準入力のデータを引数で指定したファイルと標準出力にデータを出力します。 この場合は、grepの実行結果を受け取り、(ディスク上のファイルではなく)ディスプレイに出力させ、 さらに同じデータをwcに渡します。

wcコマンドは、-lオプションを使って渡されたデータの行数を表示します。 これで、検索結果と件数の両方が表示できます。

   

なお、端末のデバイスファイル名は、機種によって異なります。 自分が結果を表示させたいウィンドウや端末上で tty というコマンドを入力すると デバイスファイル名を確認できます。

UNIX Handy Manual:grep

 

grepコマンドで行末に空白やタブを含むデータも思うように検索できる?
行末にスペースやタブが複数入っていたり、入っていなかったりというデータは、正規表現という 特殊記号を使って条件指定を行います。 例えば、
tokyo__[return]スペースが2つ入っている
tokyo[return]すぐリターン
tokyo_______[return]タブが1つ入っている

このようなデータを使って「行末がtokyoという単語で終わるもの」(スペースやタブを含んでもよい) という指定をする場合には、次のように指定します。

grep 'tokyo[   ]*$' ファイル名    ・・・・[ ]内はスペース1つとタブ1つを押す
これは、「tokyoの後にスペースまたは([ ]で指定)タブが0回以上(*で指定) 繰り返されて行が終わる($で指定)もの」をあらわしています。

UNIX Handy Manual:grep

 

grepコマンドで検索結果と行番号を表示できる?
grepコマンドのオプションで -nを指定すると、行番号も表示されます。

UNIX Handy Manual:grep