grep比較ファイルが機能しない

grep比較ファイルが機能しない

私はうまく使用しました:

grep -wFf inputqueries.txt seachedfile.txt > results.txt

inputqueries.txtの各クエリに対してsearchedfile.txtを検索します。

inputqueries.txt は次のようになります。

213.183.56.186
216.176.100.240
216.215.112.149
217.23.49.178
222.29.197.232
23.235.201.32
23.253.150.120
202.112.166.5

searchedfile.txt は次のようになります。

168.68.129.127  184.73.191.34
199.133.78.171  202.112.166.5
64.180.139.190  199.141.121.11
199.133.186.162 128.118.250.5
54.145.167.92   168.68.129.73
199.154.229.66  23.75.15.164
162.79.16.103   199.134.135.69

results.txtが正しいです。

199.133.78.171  202.112.166.5

残念ながらそしてそれが私の成功が止まったところです。これを現実世界に適用してみるとうまくいきません。ゼロ個の結果を返すたびに。

私は(IPの代わりに)単語クエリリストと同じinputqueries.txtファイルを使用しました。また、実際のログファイルディレクトリへの書き込み権限がなく、ほとんどのログが次のように圧縮されることも注目に値します。.gz.また、複数の類似ファイルを同時に検索したい(zcat http、zcat conn。*など)

zcat filestosearch.* | grep -wFf /home/username/inputqueries.txt > /home/username/results.txt

動作しません(-wFを削除してgrep -fをそのままにしても機能しません)。

zgrep -wFf /home/username/inputqueries.txt filestosearch.* > /home/username/results.txt

動作しませんでした。

実生活で検索したログは異なりますが、httpは次のとおりです...(どちらも兄弟ログです)

1432343999.435553       CuCcn04H20cc2ZHyEh      202.170.48.4    50501   197.138.26.55   80      4       GET     ndb.nal.usda.gov        /ndb/search/autosuggest?manu=&fgcd=&term=Coconut+milk       http://ndb.nal.usda.gov/ndb/foods?fgcd=&manu=&lfacet=&count=&max=35&sort=&qlookup=Oil%2C+palm&offset=&format=Abridged&new=&measureby=   Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.65 Safari/537.36    0       12994   200     OK      -       -       -       (empty) -       -       -       -       -       FGGh0g4a24L8Q6CZUb     text/plain
1432343999.382108       CKPWGW2cubkRjFpTKf      197.166.19.125   63803   54.191.210.216  80      1       GET     client.ql2.com  /cc/diff/http.www.ars.usda.gov/_22Fpandp_22Flocations_22FcityPeopleList.cfm_23Fmodecode_23D60-64-05-10/20150409123538diff.html  -       WebTrends/3.0 (WinNT)  00       302     Moved Temporarily       -       -       -       (empty) -       -       -       -       -       -       -
1432343999.595036       Cz4XJl3uaq2Fxc0M9a      63.248.145.199  63004   197.155.76.112  80      1       GET     start2farm.gov  /sites/all/themes/contrib/twitter_bootstrap/images/arrow-green.png      http://start2farm.gov/  Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko     0       1498    200     OK      -       -       -       (empty) -       -       -       -       -       Fo69Ao3w36RxKcoH9f     image/png
1432343999.732470       CTPQZyQ7tX7BUjU5j       197.123.240.10    56863   216.58.217.132  80      36      GET     toolbarqueries.google.com      /tbr?client=navclient-auto&ch=63738508926&features=Rank&q=info:/url?q=http://www.ncbi.nlm.nih.gov/books/NBK8125/&sa=U&ei=FjjmVJriAceagwSM1oOIDg&ved=0CBsQFjAB&usg=AFQjCNHgMKW6EIWKxclKB9o-o21bQu7IOw     -       Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.21022; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618)    0       5928    403     Forbidden       -      --       (empty) -       -       -       -       -       F2UdRnxrFUEHJFdW4       text/html

最も簡単な1行コマンドを使用してファイルでgrepを機能させるにはどうすればよいですか?

答え1

\r問題は、Windowsのある時点でファイルが編集され、最後に通常表示されない追加の文字が追加されたようです。

そのコマンドがあれば、dos2unixそれを使用してファイルを変換できます。これがなく、行末に重要なスペースがない場合は、次のようにGNU sedを使用して実行できます。

sed -i -e 's/\s*$//' inputqueries.txt

ファイル(-iフラグ)をその場で変更し、行末のスペースをスペースなしで置き換えて効果的に削除します。 -iただし、これはPOSIXの一部ではないため、移植可能なソリューションが必要な場合は、コマンドの残りの部分を使用して一時ファイルにsedリダイレクトできます。ファイルが正しいと確信している場合は、実際に希望のファイルに名前を変更してください。

関連情報