FreeBSDでWindowsの秀丸エディタみたいなgrepする方法があったら教えて下さい。

たとえば、秀丸ではこんな風にgrepしてます。

検索する文字列:hoge
検索するファイル:*.c *.h
「大文字/小文字の区別」にチェック
「単語の検索」にチェック
「サブフォルダも検索」にチェック

どなたか分かる方、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

一番簡単な方法です。

不完全ですが・・・。(汗)

起点となるディレクトリで、
grep hoge `find . -name "*.cpp"`;grep hoge `find . -name "*.h"`
を実行。
※単語での検索は出来ません。
※ファイル数に制限があります。1000くらいがMAXです(通常は)。

この回答への補足

すいません、うまくいきません。
メッセージ:grep: find . -name "*.c": No such file or directory
と、なってしまいます。

grep hoge `find . -name "*.cpp"`;grep hoge `find . -name "*.h"`
     ↑
    findを囲んでいるのは、シングルクォートですよね?

grep hoge */*.c
find . -name "*.c"
上記2行は、うまくいきます。

補足日時:2001/08/14 16:29
    • good
    • 0
この回答へのお礼

できました。ありがとうございました。

お礼日時:2001/08/14 18:37

下の補足に対してですが、「'」じゃなくて「`」ですね。



あと、単語の一致は、-w オプションでいけると思います。
これについては man grep を御参照下さい。

まあ、実用的には、1階層下までしか見ないのであれば、私なら
% grep -w hoge *.c *.h */*.c */*.h
なんてしちゃいますけど。
    • good
    • 0
この回答へのお礼

できました。ありがとうございます。

すいません、勘違いしていました。’←→‘

Windowsプログラマが、慣れないUNIX系システムを
追っかけているもので、かなり深い階層まで一気に
grepしたかったのです。

これで、作業効率がUPします。
ありがとうございました。

お礼日時:2001/08/14 18:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QAIX ksh利用 grep 検索で マッチした行とn段下(上)の行を合わせて表示したい

kshで以下の処理を行いたいのですが、bshで使えるオプションが使えないようです。どうすれば??
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ファイル ./test の内容は以下のとおりです。

test1
30
50
12
test2
60
12
01
test3
***
20
***

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(1)例えば "test2"という文字列を含む行と、合わせて下3行を拾って表示させたい時は、どのようにコマンドを打てばよいのですか?

test2
60
12
01
のように表示させたい。

(2)あらかじめ、とりだしたい情報がn行目にあるとわかっている時に、
取り出したい行を複数指定して表示させるにはどのようにコマンドを打てばよいですか?

Aベストアンサー

追記
> kshで以下の処理を行いたいのですが、bshで使えるオプションが使えないようです

各コマンドでの機能は、各コマンドに依存する問題で、シェルの違いは関係ありません。

AIXではPOSIXという規格に準じたgrepがインストールされています。
LinuxではGNU grepというGNUが独自拡張したgrepがインストールされています。

なので、(それぞれのシェルがインストールされているとして) AIXでbashを動かしても、grep -B は使えないし、 linuxでkshからgrep -Bとすると正常に動作します。

なお、シェルには外部ファイルを使用しない内蔵コマンドというものがあり、これは(Bash独自の内蔵コマンドがkshで使えないなど)シェルの違いに影響を受けます。

Qgrepコマンドでの文字列検索

grepコマンドについて質問です。

grepコマンドでCSVファイルを参照し、ある項目に特定の文字列でないものがあれば、そのファイル名を取得する処理をしたいと思っています。

つまり、ある項目を$strとすると
$str <> 'aaaaaa'
という処理をgrepで行おうと考えています。

現状では、
grep -l '^[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^,]*,[^(aaaaaa)]' ファイル名

等を試していますが、[^(aaaaaa)]だと一文字目しか判別できていないようです。[^a{6}]などもうまくいきません。

何かいい方法があれば教えて頂きたいと思います。
宜しくお願いします。

Aベストアンサー

コマンド一発でファイル名を取得する方法は思いつないので、とりあえずシェルを作ってみました。

下記シェルをファイルがあるディレクトリに置いて、検索文字列をパラメータにして実行してみてください。
シェル名:test.sh、検索文字列:aaaaa の場合
./test.sh aaaaaa

◎注意点
$7の部分はCSVファイルの何番目の項目かを表しているので実際の値に変えてください。
【CNT=`awk -F, '{print $7}'・・・・】
例:2番目の項目なら$7⇒$2

------------------------------------------------
#/bin/ksh
SHELLNM=$0
STRING=$1
ls | awk '{print $1}'| grep -v $SHELLNM | while read LIST
do
set -- `echo $LIST`
FILENAME=$1
CNT=`awk -F, '{print $7}' $FILENAME |grep $STRING|wc -l|awk '{print $1}'`
if (( $CNT != 0 ))
then
echo $FILENAME
fi
done
exit 0

コマンド一発でファイル名を取得する方法は思いつないので、とりあえずシェルを作ってみました。

下記シェルをファイルがあるディレクトリに置いて、検索文字列をパラメータにして実行してみてください。
シェル名:test.sh、検索文字列:aaaaa の場合
./test.sh aaaaaa

◎注意点
$7の部分はCSVファイルの何番目の項目かを表しているので実際の値に変えてください。
【CNT=`awk -F, '{print $7}'・・・・】
例:2番目の項目なら$7⇒$2

------------------------------------------------
#/bin/ksh
...続きを読む

QFreeBSDに付いて

FreeBSDマシーンのIPアドレスとホスト名を変更して設置場所を変えたいのですが、どこを変えたらよろしいのでしょうか。学習途上者

Aベストアンサー

(1) IP アドレスは固定で振っていますか?それともDHCP 等で動的に決めていますか?
(2) また、ホスト名の解決にはDNS を使っていますか?
(3) ネットワークカードはPC カードですか?それともISA/PCI ?

などによって変わってきます。
ご自分のマシンがどのような設定になっているのかはお分かりでしょうか?

IP アドレスを固定で振っているのでしたら、
/etc 以下のテキストファイルにその設定が書いてあることが多いので、
# grep 192.68.1.45 /etc/*
のように、
# grep ホスト名またはIPアドレス /etc/*
コマンドを実行すれば
/etc/hosts: 192.68.1.45 myhost......jp
/etc/rc.conf: ifconfig_fxp0="192.68.1.45 .....

のような感じで見つかると思います。
たいていの場合は、
/etc/hosts .... ホスト名とIPアドレスの関係
/etc/rc.conf .... ネットワークカードへのIP アドレスの割り当て
/etc/pccard.conf ... ネットワークカードへのIP アドレスの割り当て(pccard 版)

あたりに設定があるはずです。
その辺の該当箇所を書き換えればいいと思います。

動的にアドレスが変わる場合は、すいません。よく分からないのでパスです。

FreeBSD マシンがDNS サーバになっていたり、DNS サーバが他にあって、
自分のマシン名をそこに登録していたりすると、そっちの設定を変更する
必要があります。
DNS サーバの設定はあまり詳しくないので、パスします。

あと、移動で変更が必要になりそうなファイルは、
/etc/resolv.conf ... 参照するDNS サーバの設定
/etc/host.conf ... DNS 、/etc/hosts 、NIS の参照の優先順位
くらいかな。

手元にないのですが、マニュアルがインストールしてあれば、man ファイル名で
マニュアルが出てくると思います。あんまり親切ではないですけど、一通りの
書式は書いてあると思うので、参考にしてください。
/etc/defaults/ 以下に、(バージョンにもよりますけど)rc.conf やpccard.conf のデフォルト設定が入っていますので、それを参考にしてもいいかも知れません。

(1) IP アドレスは固定で振っていますか?それともDHCP 等で動的に決めていますか?
(2) また、ホスト名の解決にはDNS を使っていますか?
(3) ネットワークカードはPC カードですか?それともISA/PCI ?

などによって変わってきます。
ご自分のマシンがどのような設定になっているのかはお分かりでしょうか?

IP アドレスを固定で振っているのでしたら、
/etc 以下のテキストファイルにその設定が書いてあることが多いので、
# grep 192.68.1.45 /etc/*
のように、
# grep ホスト名またはIPアドレス...続きを読む

Qgrepについて

またまた質問させていただきます。
grep '\(.\)\1' っていったいどういうことを
しているのでしょうか?教えてください。

Aベストアンサー

見づらいので全角で書きます。

¥(参照文字列¥)という部分、質問では参照文字列は.(ピリオド)になっていますが、このピリオドは任意の文字列を意味します。

で、その後の¥1これは、簡単にいうと「1番目にでてきたカッコの参照文字列と同じ物を前方一致で探す」 事を意味します。

なので、質問のコマンドでは任意の文字列が2つ続く箇所、つまり aa とか 11 とかを探しに行きます。
例えば、質問の内容を

grep ’¥(..¥)¥1’

とした場合、2文字の並びが2回続く場所を前方一致で探しに行きます。 abab 5252 とか・・。

こんなところでどうでしょう?

Qmule for FreeBSD

mule for FreeBSD4.4のバイナリはどこかのサイトに置いてないでしょうか?
なお、パッケージインストールは一般ユーザの権限しかないため、
インストールできないので、バイナリそのものが必要です。

Aベストアンサー

こんばんわ、お困りですね。

さてご質問の件ですが、本家のサイトで検索かければすぐに見つかりますよ。

参考URL:http://www.jp.freebsd.org/search.html#doc


このカテゴリの人気Q&Aランキング

おすすめ情報