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

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

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

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

Q&A

解決済

2回答

2308閲覧

grep fオプションについて

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

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

0グッド

1クリップ

投稿2018/11/26 14:43

編集2018/11/26 15:04

Linux grepコマンドの-f オプションについて、
grep -f 検索文字リストが書かれたファイル 検索対象ファイル

という使い方があると存じますが、
検索文字リストが書かれたファイルには、文字数制限はありますか?

2000バイトほどあるファイルを検索文字リストとしたところ、
文字列が確かに検索対象ファイルに存在するのに、
存在しないことになっていました。
また、文字列が間違っているのかと思い、
ファイルを逆にしたら、
その文字列が検索対象ファイルに存在するという結果になっていました。

よろしくおねがいします。

検索文字リストhoge.txtの中身
var/www/aaaaa
var/www/bbbbb
var/www/ccccc

‥‥
2000バイト

検索対象ファイルhoge2.txtの中身
aaaaa

var/www/を削除
sed -i -e 's/var/www///' hoge.txt
「\」はエスケープです。

検索対象ファイルから検索文字リストに含まれる文字を検索
grep -f hoge.txt hoge2.txt

結果
表示なし

逆で試してみる
grep -f hoge2.txt hoge1.txt

結果
aaaaa

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

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

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

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

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

emasaka

2018/11/26 15:00

「var/www/を空白に置換」とあるコマンドは、このまま実行するとsedがエラーになります(“\”でなく“¥”が使われているため)。また、説明とコマンドが異なり、空白に置換するのではなく削除しています。このあたりを実際にしたとおりに修正したほうが回答がつきやすいかと思います。
退会済みユーザー

退会済みユーザー

2018/11/26 15:05

申し訳ありません。修正しました。
guest

回答2

0

まず、同じような質問を何度も投稿するのは止めましょう。
質問は編集できるので、適宜編集してください。

結局、hoge.txtは、

plain

1aaaaa 2bbbbb 3ccccc 4・・・

と言うことですよね。
であれば、どちらもaaaaaという結果になるはずですが。

日本語の読解を間違っているのではないでしょうか?
「検索文字リスト」というのは、「検索する文字列」を1行に1つずつ書いたものです。
「検索対象ファイル」というのは、そのファイルから「検索する文字列」を探すという行為の対象です。

つまり、grep -f hoge.txt hoge2.txtは、「aaaaa」という文字列だけのファイルの中から、「aaaaa」と「bbbbb」と「ccccc」を探すという意味です。
grep -f hoge2.txt hoge1.txtは、「aaaaa」「bbbbb」「ccccc」という複数行ファイルの中から、「aaaaa」という文字列を探すと言うことです。

投稿2018/11/26 15:07

otn

総合スコア84423

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

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

0

ベストアンサー

ありがとうございます。
改行文字コードが違いました。

投稿2018/11/27 10:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問