質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

2回答

2832閲覧

grepでの正規表現検索について

yoppy0066

総合スコア293

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

0グッド

1クリップ

投稿2018/03/07 08:48

編集2018/03/07 08:49

http://orange-factory.com/sample/utf8/code3-ef.html
こちらのサイトを元に

$ grep -E '[ア-ン]' hoge.txt

こちらの形で半角だけ検索したいのですが、全角カナもヒットしてしまいます。なぜでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/03/07 11:58

OSは何でしょう?
yoppy0066

2018/03/07 13:37

mac osx10.13.3になります。
otn

2018/03/10 16:45

locale コマンドを実行してみてください。Macにもあるかな?
yoppy0066

2018/03/11 04:11 編集

$ locale LANG="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_CTYPE="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_ALL= このようになりました。
otn

2018/03/12 12:03

不審な点は無いですね。うーむ。
a_saitoh

2018/03/13 02:25

「grep -E '[ア-ン]」というスクリプトをファイルに書いて、odなりhd(あるかな?)コマンドで半角のアとンの文字コードが本当にHalfwidth Katakana variants(U+FF65〜FF9F)になっているかどうか確認してみてはどうでしょうか。凝れ、本来は-Eオプションは不要ですよね
yoppy0066

2018/03/13 08:06

ありがとうございます。アとンを含むテキストファイルをア=efbdb ン=efbe9dとなり、grepをshファイルにしたものも見て見ましたが、同じものが使われているようでした。。。od -avtx1 -Ad a.txt みたいな形で確認しました。
yoppy0066

2018/03/13 08:12

grep [アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン]だと、意図した動きになるので何か私が勘違いしているのでしょうか。。?
yoppy0066

2018/03/13 08:18

いや。。全角と半角ですね。。なんか混乱しています。すみません。。。
yoppy0066

2018/03/13 08:32

ggrep '[ア-ン]'で解決しました。。
yoppy0066

2018/03/13 08:53

bsd grepでは日本語+正規表現が使えないということでしょうか。。?
a_saitoh

2018/03/14 02:46

コマンドラインから直接打つのではなく、シェルスクリプトファイルにしてから実行したらどうなりますか?どうもMacOSはコマンドラインに直接日本語を打ち込むとUTF-8ではないエンコーディングになるみたいなことを書いたWEBページがありました。
yoppy0066

2018/03/14 02:53

ありがとうございます。シェルスクリプトから実行しても上手くいきませんでした。。
otn

2018/03/17 23:32

現象が発生するデータを含めたコマンド全体を示してください。
guest

回答2

0

使用するgrepにもよるようです。Macに標準で入っているgrepではだめでしたが、homebrewで入れたgnu grepではOKでした。(ロケールはja_JP.UTF-8です)

console

1% (echo 1ア; echo 2ア) | grep -E '[ア-ン]' 21ア 32ア 4% grep --version 5grep (BSD grep) 2.5.1-FreeBSD 6% (echo 1ア; echo 2ア) | ggrep -E '[ア-ン]' 72ア 8% ggrep --version 9ggrep (GNU grep) 3.3 10Packaged by Homebrew 11Copyright (C) 2018 Free Software Foundation, Inc. 12License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. 13This is free software: you are free to change and redistribute it. 14There is NO WARRANTY, to the extent permitted by law. 15 16Written by Mike Haertel and others; see 17<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

投稿2019/04/24 07:34

crhg

総合スコア1175

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

1つの可能性ですが、ロケールの言語がja_JP.UTF-8以外になっていたりはしないでしょうか。

投稿2018/03/07 10:13

emasaka

総合スコア524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2018/03/09 16:13

LC_ で始まる環境変数は一切設定されていないということでしょうか?
yoppy0066

2018/03/12 16:58

上の方のコメントにも書かせていただいたとおりとなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問