• ベストアンサー

UNIX シェルスクリプト

UNIXのシェルスクリプトを使用してテキストファイルのある列にある 特定の文字列を条件としてその行を出力するということをやりたいのですが どのようにすればできるでしょうか? 例えば,以下のようなテキストファイルがあって,2列目がYAHOOの行を 主力したいというようなことです。 AAA SOFTBANK BBB YAHOO YAHOO TEST CCC QUICK DDD YAHOO ↓ BBB YAHOO DDD YAHOO

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

awkならこうしますが、どうしてもシェルスクリプトがよいのですか? awk '$2 == "YAHOO"{print $0}' filename

Kasaoka-Taroh
質問者

補足

特に方法はこだわらなかったのですが,awkスクリプトを使用すれば簡単にできることはわかっていたのですが,シェルスクリプトでも簡単に実現する方法があればと思い質問しました。でも,投稿していただいた方法 を使用すればシェルスクリプトで実現できそうですね。まだ,これ以外にも方法があったりするのでしょうか?

その他の回答 (2)

  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.3

テキストファイルの名前は catalog.fileとします。 次のようなシェルスクリプト(名前は grep_bashとします)を作成して実行すると検索したい文字列を聞いてくるのでYAHOOと入力するとその行が出力されます。(chmod 755 grep_bashとして実行権を与えれば ./grep_bash 又は . grep_bashで実行されます) #!/bin/bash echo -n "検索文字列を入力してください" read A1 cat catalog.file | grep $A1

Kasaoka-Taroh
質問者

補足

この方法では2列目の単語がという条件がクリアされないように思うのですが..

  • LunaSun
  • ベストアンサー率30% (4/13)
回答No.2

他に条件がなければgrepで可能。 grep ' YAHOO$' ファイル名 たぶん

Kasaoka-Taroh
質問者

お礼

確かに,質問のケースではO.K.でした。ただ,汎用性という面では NO.1の方の回答のほうが上みたいです。ありがとうございました。