3

FileA の行のコンテンツを含む FileB (カンマ区切り) の行を検索しようとしています。私は最初に使用しようとしgrepましたが、FileA の一部の文字を気にしないようです。私は、CSV フォーマットがそれほど重要であるとは考えていません。少なくともgrep.

$ grep -f FileA FileB
grep: Unmatched [ or [^

私は、一般に利用可能な Linux コマンド、Perl または Python を使用することにオープンです。FileA のコンテンツを使用して照合する理由である、照合できる特定の式はありません。以下は、FileB で一致させたい FileA の行の例です。

page=--&id='`([{^~
page=&rows_select=%' and '%'='
l=admin&x=&id=&pagex=http://.../search/cache?ei=utf-&p=change&fr=mailc&u=http://sub.domain.com/cache.aspx?q=change&d=&mkt=en-us&setlang=en-us&w=afe,dbfcd&icp=&.intl=us&sit=dbajdy.alt

上記の文字列を含む fileB の行には、行に追加の文字が含まれます。つまり、2 つのファイルの文字列は 1 対 1 では一致しません。

fileA が含まれており、abcfileB が含まれている場合、出力されます012abc*()012abc*()

4

3 に答える 3

1

テストされていない解決策:

論理:

  • FileB からの行を行配列に格納する
  • lines 配列の各行。
  • 配列の行が FileB の行の一部として表示されるかどうかを確認します
  • index(..)> 0 を返す場合。
  • その行を FileB から印刷します

awk 'NR==FNR{lines[$0]++;next}{for (line in lines) {if (index($0,line)>0) {print $0}}}' FILEA FILEB`
于 2013-06-13T15:56:40.903 に答える
1

fgrep(または同等の )を使用しgrep -Fます。これは、パターン (の内容FileA) を正規表現ではなく、検索するリテラル文字列として解釈します。

于 2013-06-13T14:31:00.703 に答える