1

bashでやるべきことがいくつかあります。こんなふうになります:

最初の引数として、書かれている順序でファイル内を検索する単語を入力し、2 番目の引数でディレクトリを入力します。再帰的に検索し、表示されるファイル名を返す必要があります。

bash mybash "alice cat" . : 「alice has a cat」、「alice cat」などを含むファイルを返す必要がありますが、「cat has alice」は含まれません。

私はこのようなことをしました

#!/bin/bash
pattern=".*"

for arg in $1; do
    pattern+="${arg}.*"
done

grep -r ${pattern} $2

ただし、行ごとにのみ検索され、次のファイルは見つかりません。

「アリス何か」

「新しい行には猫がいます」

しかし、それを返す必要があります。

いくつかの助けをいただければ幸いです。

挨拶します。

4

2 に答える 2

1

する

awk '/alice/,/cat/' file

あなたがしたいことをしますか?

于 2012-04-30T21:42:58.630 に答える
0

ファイルの改行を削除すると、grep は期待どおりに機能します。

find $2 -type f | while read file; do
  if tr '\n' ' ' < ${file} | grep -q -r ${pattern}; then
    echo ${file}
  fi
done
于 2012-04-30T20:12:05.000 に答える