• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:全角空白が間に挟まれているキーワードで検索)

全角空白が間に挟まれているキーワードで検索する方法

このQ&Aのポイント
  • 全角空白が間に挟まれているキーワードで検索する方法を探しています。
  • 現在、半角空白が間に挟まれているキーワードでの検索はできるが、全角空白の場合はどうすればいいか分からない。
  • 全角スペースの文字コード 0x81,0x40 を使用する方法があるか調査中。

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

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

ロケールと実際のファイルの文字コードに問題ないなら find /tmp -type f | xargs grep -l 'This program' それか用心するなら find /tmp -type f -print0 | xargs -0 grep -l 'This program' それと grep の実装にもよるけど、\s だと所謂全角空白も含むと思うので要注意。

km_sann
質問者

お礼

お教えいただきありがとうございます。 参考にしたページが見つからないのですが もともとは、ファイル名に空白を含むものをうまく検索するためのコマンドでした。 ファイル名に空白を含んでも、ヌル文字を区切りに使う -print0, -0 でうまく処理できるようですね。 さらに、「\0」をファイル名に含んでもうまくいくかどうかを 中身が「nakami」という二つのファイル /tmp/\0_2 /tmp/\0_1 を作ってやってみたのですが $ find /tmp -maxdepth 1 -type f /tmp/\0_2 /tmp/\0_1 /tmp/.X0-lock $ find /tmp -maxdepth 1 -type f -print0 | xargs -0 grep naka/tmp/\0_2:nakami /tmp/\0_1:nakami うまくいっているようです。 ただ、質問本文の中に書いた、 ; により繋がれたコマンドだと grep_script.sh の中に書きだされるコマンドが grep -l "This\s*program" "/tmp/0_2" などとなるので、 grep: /tmp/0_2: そのようなファイルやディレクトリはありません という結果が返ってきtれしまいます。 あと、debian jessie では確かに \s だと所謂全角空白も含むようです。

その他の回答 (2)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.3

> $ find /tmp -maxdepth 1 -type f -print0 | xargs -0 grep naka 本題からは逸れてますが -print0 の代りに find /tmp -maxdepth 1 -type f -exec grep -H naka '{}' + でも大体同じような動作になります。 どっちを使うかは趣味程度ですね。あと -maxdepth は OS により互換性なかったり意外と不便です。

km_sann
質問者

お礼

お教えいただきありがとうございます。 > find /tmp -maxdepth 1 -type f -exec grep -H naka '{}' + /tmp/\0_1 を /tmp/\0 1 と変えてもうまくいきました。

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

普通に全角空白をThisとProgramの間に入れれば良いです。

km_sann
質問者

お礼

お教えいただきありがとうございます。 "This program" 'This program' のどちらでもいけますね。

関連するQ&A

専門家に質問してみよう