他の文字列に隣接する文字列を検索しますか?

他の文字列に隣接する文字列を検索しますか?

「123456789」を検索し、「名前」に近づきたいとしましょう。それを行う方法はありますか?

私はこれを行うロジックはありません。おそらくパイプされたgrepが動作する可能性がありますか?

この目的に最適なアルゴリズムは何ですか?

入力する:

search_string1='firstname' search_string2='123456789'
proximity_#_of_lines=10

出力:

10本の線が互いに近いかどうかを調べて、例をsearch_string1見てください。search_string2つまり、2つの文字列が互いに隣接する10行の場合は、ファイルに表示されます。

ベストアンサー1

標準的なアプローチは次のとおりです。

what_we_want='123456789'
context='firstname'
distance=10
grep -E -e "${context}" -C "${distance}" file_to_look_into | grep -E -e "${what_we_want}" -C "${distance}"

最初は、一致する線を囲む線だけを見ることを保証grepします。$distanceその後、2番目の項目はその行で見つかったことを確認します$context$what_we_want2*$distance+1

一致する行だけが結果として必要な場合は、-C "${distance}"2番目の行から削除してくださいgrep

おすすめ記事